Domanda

Mi chiedo, c'è un equivalente dei componenti monorotaia View per Asp.Net MVC?

Quello che sto cercando di fare è di rendere alcuni complessa interfaccia utente che dipende da una classe, in modo da dire che siamo in una visualizzazione elenco, voglio passare un oggetto a questo ViewComponent equivalente e che ci vorrà l'oggetto come parametro e rendere il complesso UI per me che mi permette di fare altre cose nella vista. Quale sarebbe il modo migliore per farlo in Asp.Net MVC?

Dal momento che questo è un complesso UI io preferirei di scrivere una volta, quindi, i modelli non sono in realtà il modo in cui mi piacerebbe andare, come vorrà dire I ll hanno problemi di manutenibilità.
Alcune opzioni che ho visto (e io m in procinto di iniziare a provare) sono:

  • Html.RenderAction in futures
  • subcontroller

Comunque mi piacerebbe sapere se c'è qualcos'altro o se uno è meglio dell'altro per questo particolare scenario

È stato utile?

Soluzione

È possibile utilizzare

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

Date un'occhiata a questo href="http://eduncan911.com/blog/html-renderaction-for-asp-net-mvc-1-0.aspx" rel="nofollow pagina

Altri suggerimenti

Che dire RenderPartial? Che sembra andare bene il disegno di legge.

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

Si prega di dare un'occhiata a DisplayTemplates nonché EditorTemplates in anteprima MVC 2.

O forse si vuole Templated Helpers ?

MvcContrib InputBuilder ha qualcosa di simile.

Anche se si può solo scrivere il proprio:

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;
      }
   }
}

Avviso ricorsione. Naturalmente si dovrà aggiungere il supporto collezioni, ecc ... interruttore all'interno (PropertyType) ... ma questo non è così difficile. Si può anche verificare la presenza di UIHint sulla proprietà per rendere parziali. Un sacco di possibilità e tutto sotto il vostro controllo; -)

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top