النسخة الإنجليزية:http://dflying.dflying.net/1/archive/110_build_your_own_transformers_in_aspnet_atlas.html
يعد الربط في ASP.NET Atlas وسيلة قوية لتوصيل كائنين. (يمكنك الرجوع إلى http://dflying.cnblogs.com/archive/2006/04/04/366900.html لمزيد من المعلومات حول الربط.) سيؤدي ربط Atlas تلقائيًا إلى تطبيق الخصائص التي تم تغييرها على الكائن المصدر على السمة المحددة للكائن المستهدف. لكن في بعض الأحيان قد ترغب في إجراء بعض التعديلات على هذه الخاصية قبل تطبيقها على الكائن المستهدف. على سبيل المثال، عند عرض قائمة مفهرسة، قد ترغب في أن يبدأ الفهرس بالتزايد من 1 بدلاً من 0 الافتراضي في JavaScript. في هذا الوقت تحتاج إلى استخدام محول أطلس. المحول في Atlas يشبه خط الأنابيب، وسيتم إدراجه في عملية تعيين القيم من خصائص الكائن المصدر إلى خصائص الكائن الهدف، من أجل إجراء التصفية/الزخرفة/التحويل اللازم. على الخصائص المراد تعيينها (هنا لإضافة 1 إلى السمة المصدر) ثم تعيينها إلى السمة الهدف.
يوفر Atlas بعض المحولات المضمنة، مثل الإضافة والضرب والمقارنة وما إلى ذلك. ومع ذلك، في التطوير الفعلي، في معظم الحالات نحتاج إلى تحديد المحول الخاص بنا. دعونا نتعرف على كيفية كتابة محول مخصص من خلال تطوير مثال على CustomBooleanTransformer.
يتم استخدام CustomBooleanTransformer لتحويل القيم المنطقية إلى تنسيقنا المخصص، مثل نعم/لا أو مكتمل/InProgress. إذا اخترنا استخدام الربط لعرض قيمة منطقية للمستخدم، فسيكون هذا المحول مفيدًا جدًا، وسيمنح المستخدم تجربة مستخدم أكثر سهولة.
بشكل عام، إنشاء محول سيكون له الخطوات الأربع التالية:
الحصول على القيمة المطلوب تحويلها والتي تم تمريرها من كائن الربط المصدر. هنا نقوم أولاً باستدعاء get_value() للحصول على القيمة الواردة وتحويلها إلى نوع منطقي.
الحصول على معلمات المحولات. المعلمة هنا عبارة عن سلسلة يمكن تقسيمها إلى جزأين بواسطة فاصلة (،). سيتم تحويل الصحيح المنطقي إلى الجزء الأول وسيتم تحويل الخطأ إلى الجزء الثاني. إذا كانت المعلمة التي تم تمريرها فارغة، فسيتم استخدام السلسلة الافتراضية صحيح/خطأ بدلاً من ذلك.
قم بإجراء التحويل. في هذه الخطوة، يجب عليك استخدام المنطق الخاص بك لتحويل القيمة الواردة إلى القيمة الصادرة (عادةً باستخدام معلمات المحول الذي تم الحصول عليه في الخطوة السابقة). هنا نقوم أولاً بتقسيم المعلمة إلى جزأين بفاصلة (،)، ثم نستبدل true بالجزء الأول وخطأ بالجزء الثاني. إذا لم يكن من الممكن تقسيم الوسيطة إلى جزأين، فاستخدم صواب/خطأ بدلاً من ذلك.
لإخراج القيمة المحولة، قم باستدعاء الطريقة set_value() لتحقيقها.
يوجد أدناه رمز JavaScript لـ CustomBooleanTransformer، احفظه باسم CustomBooleanTransformer.js.
Sys.BindingBase.Transformers.CustomBoolean = function(sender, eventsArgs) {
// الخطوة 1، الحصول على قيمة الإدخال.
قيمة فار = eventsArgs.get_value();
إذا (typeof(value) != 'boolean') {
القيمة = Boolean.parse(value);
}
// الخطوة 2، سيتم استخدام وسيطات الحصول على التحويل.
var customString = eventsArgs.get_transformerArgument();
إذا (customString == null || customString == '') {
customString = 'صحيح، خطأ'؛
}
// الخطوة 3، قم بإجراء التحويل.
var customValues = customString.split(',');
إذا (customValues.length != 2)
{
customValues[0] = 'true';
customValues[1] = 'خطأ';
}
فار newValue = value ? customValues[0] : customValues[1];
// الخطوة 4، قم بتعيين القيمة المحولة كمخرجات.
EventArgs.set_value(newValue);
}
حسنًا، لنختبر الآن CustomBooleanTransformer. أضف مربع اختيار ومربع نص إلى الصفحة واربطهما. عند تحديد/إلغاء تحديد خانة الاختيار، سيتم عرض القيمة المنطقية المحولة المقابلة في مربع النص.
يوجد أدناه تعريف HTML من ملف ASPX. لا تنس إضافة مرجع إلى ملف CustomBooleanTransformer.js في ScriptManager.
<atlas:ScriptManager ID = "sm1" runat = "الخادم">
<البرامج النصية>
<atlas:ScriptReference Path="CustomBooleanTransformer.js" />
</مخطوطات>
</atlas:ScriptManager>
<input id="myCheckbox" type="checkbox" />
<معرف الإدخال = "myTextbox" نوع = "نص" />
يوجد أدناه تعريف برنامج Atlas النصي. هنا، يتم تحديد وسيطة المحول كـ "نعم، لا"، لتحويل القيمة المنطقية الحقيقية إلى نعم والخطأ إلى لا. <page xmlns:script=" http://schemas.microsoft.com/xml-script/2005 ">
<المراجع>
</المراجع>
<المكونات>
<checkBox id="myCheckbox" />
<textBox id="myTextBox">
<الارتباطات>
<binding dataContext = "myCheckbox" dataPath = "محدد"
خاصية = "نص" تحويل = "CustomBoolean" TransformerArgument = "نعم، لا" />
</الربط>
</textBox>
</المكونات>
</صفحة>