استخدام نموذجين مكتوبين بقوة لعرض MVC واحد

StackOverflow https://stackoverflow.com/questions/683153

  •  22-08-2019
  •  | 
  •  

سؤال

هل أفتقد شيئًا أساسيًا لمبادئ MVC أم أنني سأصاب بالجنون؟

إذا كان لدي طريقة عرض تعرض قائمة الكتب وقائمة المؤلفين، فلا بد لي من إنشاء فصل يحتوي على قائمة الكتب وقائمة المؤلفين كخصائص.يمين؟

سأقوم بعد ذلك بكتابة العرض بقوة لاستخدام هذه الفئة.

أريد الآن إنشاء صفحة جديدة بنفس القوائم ولكن تحتوي أيضًا على قائمة بالعروض الترويجية.هل أحتاج إلى إنشاء فئة أخرى تحتوي على قائمة بخاصية الكتب وقائمة بخاصية المؤلفين وقائمة بخاصية الترقيات؟

إذا قمت بإنشاء فصول دراسية لجميع طرق العرض، فأنا أقوم بإنشاء الكثير من العمل الإضافي.هل من المفترض أن أقوم بإنشاء أجزاء مكتوبة قوية لكل من هذه؟ماذا لو كان التخطيط يختلف في كل مرة؟

لدي حاليًا فئة BaseViewData يتم استخدامها بواسطة جميع طرق العرض لأنها تحتوي على بعض الخصائص الشائعة.ومع ذلك، فأنا الآن أجد صعوبة في إدخال عناصر أخرى دون زيادة حجم فئة BaseViewData بشكل كامل.

من فضلك هل يستطيع أحد مساعدتي في فهم النظرية التي لا تغطيها جميع الأمثلة البسيطة.

هل كانت مفيدة؟

المحلول

انا استعمل ال طرق تمديد عرض البيانات من MvcContrib التي تضيف دعمًا لنماذج متعددة مكتوبة بقوة (طالما أنها أنواع مختلفة).يبدو رمز إضافتها إلى ViewData كما يلي:

User currentUser = GetCurrentUser();
List<Project> projectList = projectRepository.GetRecentProjects(currentUser);
ViewData.Add(user);
ViewData.Add(projectList);

يبدو الكود الموجود في طريقة العرض لسحبها كما يلي:

User user = ViewData.Get<User>();
List<Project> projectList = ViewData.Get<List<Project>>();

يؤدي هذا إلى إزالة "السلاسل السحرية" وصب الكتابة.لاحظ أن هذا لا يفعل أي شيء مع خاصية نموذج العرض.

نصائح أخرى

وإنشاء واحد الطبقة الحاوية للاعتراض من أي وقت مضى في النظام الخاص بك، واستخدام جميع وجهات النظر - بسيطة

وكائنات مع قيمة فارغة ليس لها فوق الحقيقي

ولقد واجهت نفس المشكلة. أعتقد أن حل عام لمعظم الناس هو لإنشاء فئة الحاوية التي تحتوي على كتب ومؤلفون النماذج التي تريد حقا، وتمرير تلك الحاوية إلى العرض الخاص بك.

والفرعية الأمثل، نعم، لكنه يعمل. نأمل أن تعالج هذه في الإصدارات المستقبلية من هذا الإطار.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top