سؤال

أتساءل ، هل هناك ما يعادل مكونات عرض monorail لـ ASP.NET MVC؟

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

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

  • html.renderaction في المستقبل
  • Subcontroller

ومع ذلك ، أود أن أعرف ما إذا كان هناك أي شيء آخر أو إذا كان الشخص أفضل من الآخر في هذا السيناريو بالذات

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

المحلول

يمكنك استخدام

<% Html.RenderAction<ProductController>(c => c.RenderProductResults()); %>

الق نظرة على هذا صفحة

نصائح أخرى

ماذا عن Renderpartial؟ يبدو أن هذا يناسب الفاتورة.

<% Html.RenderPartial("MyPartialView", Model.Data); %>

يرجى إلقاء نظرة على DisplayTemplates وكذلك editortemplates في معاينة MVC 2.

أو ربما تريد المساعدون الملموسون?

MVCContrib InportBuilder لديه شيء مشابه.

على الرغم من أنك قد تكتب فقط:

public static string RenderInput(this HtmlHelper html, object data, string prefix)
{
   foreach (var prop in data.GetType().GetProperties())
   {
      object val = prop.GetValue(data, new object[0]);
      string name = prefix + prop.Name;
      switch (prop.PropertyType.Name)
      {
          case "String": html.TextBox(name, val); break;
          case "Guid": html.Hidden(name, val); break;
          default: html.RenderInput(val, name + "."); break;
      }
   }
}

إشعار عودة. بالطبع سيكون عليك إضافة دعم مجموعات ، إلخ ... داخل التبديل (PropertyType) ... ولكن هذا ليس بالأمر الصعب. يمكنك أيضًا التحقق من uihint على العقار لتقديم الجزارات. الكثير من الاحتمالات وكل شيء تحت سيطرتك ؛-)

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