اهلا وسهلا بكم احبائي في هذه المحاضرة ان شاء الله سوف نتعلم كيفية انشاء كلاس من النوع الـ View Model .. قبل ان نبدأ بهذه المحاضرة سوف نتذكر ما اخذناه في المحاضرات السابقة .
قمنا بإنشاء جدول لصفحات الموقع في قاعدة البيانات اسميناه PagesTbl يحتوي على الحقول التالية ( اسم الصفحة بالعربي ، اسم الصفحة بالانجليزي، وصف للصفحة ، تبديل الصفحة ، وهل الصفحة لها شريط جانبي ام لا ..
وبما ان قاعدة البيانات تم انشاؤها في بيئة الـ Sqlserver وانشأنا مشروعنا في بيئة اخرى هي بيئة الـ Visual studio لذلك قمنا بكتابة كود الاتصال مع قاعدة البيانات في ملف الـ Web config .
وايضا قمنا بعمل كلاس مهم جدا اسميناه بـ ShopDb وغرضة عملية التفاعل مع قاعدة البيانات ويحتوي على اسماء الكلاسات من النوع الـ DTO ويعيد DbSet وهو يورث من الـ DBContext
وايضا قمنا بعمل كلاس من النوع الـ DTO اسميناه PagesDTO وقلنا ان هذه الكلاسات تحتوي على كل الخصائص التي تحاكي اعمدة الجدول الـ Pages وسوف نتستخدمة لعملية نقل البيانات مع جدول قاعدة البيانات وكذلك الخصائص في الكلاس Viewmodel والذي هو عنوان محاضرتنا لهذا اليوم .
اهداف المحاضرة
هدفنا ان يلم المبرمج في نهاية المحاضرة بالأهداف التالية
مفهوم الكلاس وما الهدف من استخدامه .
انشاء كلاس يعبر عن جدول الصفحات وانشاء الخصائص فيه
مفهوم الـ validation Role وماهي المكتبة التي تحتويها
كتابة validation عل الخصائص و ما فائدة الـ validation role
الفرق بين الكلاس DTO وأيضا الكلاس من النوع View Model
مفهوم الكلاس والهدف من استخدامه
الكلاس من النوع الـ View model يستخدم لتخصيص الاعمدة التي نريد استخدامها فقط في الـ View والتي سوف تاخذ بياناته من الكلاس الـ DTO اي سوف تتبادل البيانات مع الكلاس الـ DTO ومفهوم هذا الكلاس انك تستطيع تمرير اكثر من خصائص الكلاس من النوع الـ DTO الى هذا الكلاس والذي من النوع الـ View Model فلربما تحتاج الى اكثر من خاصية ومن اكثر من جدول تسخدمها في الـ View ولهذا جاء استخدام هذا الكلاس من النوع View model ليسمح لك باستخدام اكثر من خاصية لاكثر من جدول ومن ثم استدعاء هذا الكلاس في الكنترولر ، ومن فوائد الـ View Model ان كتابة الكود يكون فيه منظما .
انشاء كلاس يعبر عن جدول الصفحات وانشاء الخصائص فيه
الان بعد ما عرفنا مفهوم الكلاس من النوع الـ ViewModel سوف نقوم الان ببناء كلاس يسمى PageVM اي من النوع ViewModel. لذلك سنذهب الى بيئة الـ Visual Studio ثم نقوم بعمل مجلد يسمى View Model ومن المجلد نضع فيه كلاس نسميه PageVM
الان سوف نقوم بكتابة الخصائص على هذه الكلاس والتي نريد ان نستخدمها فقط في الـ View ونقوم Validation Role عليها
تلاحظون في الصورة اعلاه اننا كتبنا بعض الخصائص والتي نريد ان تعرض فقط على للمستخدم وايضا نريد استخدامها وايضا وضعنا بعض خصائص التحقق من صحة المدخلات على هذه الخصائص تسمى هذه الخصائص Validation Role
مفهوم الـ Validation Role وماهي المكتبة التي تحتويها
الـ validatin Role هي خصائص تقيد الـ الخصائص التي تمثل الحقول للجدول بتحقق من المدخلات وصحة البيانات وهي توضع على الخاصية للحقل مثلا توضع على خاصية الاسم اوخاصية البريد الاكتروني او خاصية الوصف على سبيل المثال سنتعرض بعض الـ Validation Role والتي وضعنها في الكلاس
خاصية الـ Required : هذه الخاصية تقيد الحقل(اسم الصفحة بالعربي ) بانه يجب ادخال نص فيها ويجب الا تكون فارغة
خاصية StringLength : هذه خاصية تقيد حجم طول النص للحقل (الاسم بالعربي ) بان لايقل على ثلاثة حروف ولا يزيد ان 50 حرف
خاصية Display : هذه خاصية تقيد عرض العنوان بان يظهر - اسم الصفحة بالعربي
اما المكتبة التي تحوي هذه الـ Validation Role تسمى Data annotations كما في الصورة :
وفي هذا الكلاس سوف نقوم الان بعمل دالتان تسمى contractor والفائدة منها تمرير Object من الكلاس DTO الى الخصائص لهذا الكلاس
في الصورة اعلاه قمنا بتمرير Object من النوع الـ DTO الى الخصائص حيث اسندنا قيم التي تاتي من الـDTO الى الخصائص في الكلاس VM
وايضا قمنا بعمل دالة أخرى من النوع الـ Constructor فقط ليتم استدعاؤه من الكنترولر لحفظ البيانات من خلاله
ليصبح في النهاية شكل الكلاس كاملا بهذه الطريقة :
الفرق بين الكلاس DTO وأيضا الكلاس من النوعView Model
هناك اوجه تشابه بين الـ View Model وبين الـ DataMole(DTO) وكذلك هناك اختلاف مثلا :
التشابه : نقل البيانات في سجل بين الطبقات والكلاسات
الاختلاف : المقصود من ViewModel أن يتم استخدامه في الـ View ، لكي يتم عرضه على المستخدم النهائي ، واستخدام هذه الخصائص في ادوات العرض او الادخال . وكذلك الـ ViewModle يسخدم لتمرير البيانات من الـ controller الى الـ View والعكس ، عادة ما يكون DTO غير مخصص للعرض. والغرض منه هو إرسال البيانات وتبادلها بين الطبقات .
في نهاية هذه المحاضرة … نعطيكم اسئلة اختبار لتقييم فهمك للمحاضرة .
ما مفهوم الكلاس وما الهدف من استخدامه ؟
انشئ كلاس يعبر عن جدول الصفحات واكتب الخصائص فيه ؟
ما مفهوم الـ Validation Role وماهي المكتبة التي تحتويها ؟
اكتب validation عل الخصائص و ما فائدة الـ validation role؟
ماهو الفرق بين وظيفة الكلاس DTO وأيضا الكلاس من النوعView Model؟