Pregunta

Me pregunto, ¿existe un equivalente de los componentes de monorraíl Ver para Asp.Net MVC?

Lo que estoy tratando de hacer es prestar algún interfaz de usuario complejo que depende de una clase, por lo que decir que estamos en una vista de lista, quiero pasar un objeto a esta ViewComponent equivalente y que va a tomar el objeto como un parámetro y hacer que la interfaz de usuario compleja para mí lo que me permite hacer otras cosas en la vista. ¿Cuál sería la mejor manera de hacerlo en Asp.Net MVC?

Como se trata de una interfaz de usuario compleja yo preferiría escribir una vez, por lo tanto, las plantillas no son realmente la forma en que me gustaría ir, ya que significa voy a tener problemas de mantenimiento.
Algunas opciones que he visto (y yo estoy a punto para empezar a tratar) son:

  • Html.RenderAction en el futuro
  • Subcontroller

Sin embargo, me gustaría saber si hay alguna otra cosa o si uno es mejor que el otro para este escenario particular

¿Fue útil?

Solución

Puede utilizar

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

Tener un vistazo a este href="http://eduncan911.com/blog/html-renderaction-for-asp-net-mvc-1-0.aspx" rel="nofollow página

Otros consejos

¿Qué hay de renderPartial? Eso parece ajustarse a la ley.

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

Por favor, eche un vistazo a DisplayTemplates, así como en la vista previa EditorTemplates MVC 2.

O tal vez quiere con plantilla Ayudantes ?

MvcContrib InputBuilder tiene algo similar.

A pesar de que sólo puede escribir su propia:

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

Aviso recursividad. Por supuesto, usted tiene que añadir soporte colecciones, etc ... interruptor en el interior (PropertyType) ... pero esto no es tan difícil. También puede comprobar si hay UIHint en la propiedad para emitir parciales. Una gran cantidad de posibilidades y todo bajo su control; -)

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top