سؤال

وأنا أحاول أن تعلم إطار ASP .NET MVC جديد وترغب في معرفة أفضل الممارسات لاستخدام UserControls.

وأفهم أنك يمكن أن تجعل من UserControl كما جزئية وتمرير البيانات لهم من وحدة تحكم. ومن الناحية المثالية أعتقد أن من المنطقي ليس لديهم رمز خلف الملف لأن هذا يخلق إغراء لكسر القواعد MVC.

وسأعطيك مثالا حيث أنا لا أفهم كيف تناسب UserControls في النمط.

<اقتباس فقرة>   

ولدي على UserControl الذي يظهر   أحدث العلامات (يشبه إلى حد كبير على   ستاكوفيرفلوو). على عكس ستاكوفيرفلوو I   ترغب في عرض هذه UserControl على   كل صفحاتي. إذا كان لدي   تحكم يقول QuestionController   الذي يهدف إلى معالجة إجراءات من   بعض وجهات النظر مسألة على سبيل المثال عرض و   التفاصيل، يعني هذا لدي لجلب   البيانات في QuestionController و   ثم تمريرها إلى في UserControl؟

     

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

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

المحلول

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

وأفترض في كل هذا أن البيانات لفي UserControl مستقلة عن الإجراءات التي يجري التذرع. إذا كان هناك تبعية، هو على الأرجح أفضل لدفع المنطق في فئة (أو فئات، ربما باستخدام استراتيجية) وجعل جيل من البيانات واضحة في كل عمل أو وحدة تحكم (عن طريق تجاوز OnActionExecuting).

نصائح أخرى

وبدلا من ذلك، مع ASP.NET MVC 2 يمكنك الآن استخدام RenderAction للدعوة الى عمل وحدة تحكم جديدة تماما والتي يمكن جلب البيانات. وهذا يجعل التعليمات البرمجية أكثر من ذلك بكثير وحدات وهو أكثر وضوحا حيث البيانات قادم من.

ويمكنك أيضا أن تنظر في وضع الطبقات النموذج الخاص بك في التسلسل الهرمي. فإن الطبقة العليا (أو واحدة من الطبقات العليا) يحتوي على البيانات اللازمة لعناصر تحكم المستخدم انتشارا الخاص بك. ثم يمكنك تحميل هذه البيانات المستخدمة عادة في فئة تحكم القاعدة.

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