Si tengo un modelo de vista así:Plantilla de visualización personalizada ASP.NET MVC 3 con UIHint - ¿Se requiere bucle?
public class MyViewModel
{
[UIHint("SomeTemplate")]
public ICollection<SomeViewModel> Submodel { get; set; }
}
Y un establecimiento inflexible Ver con una línea de HTML así:
@Html.DisplayFor(model => model.Submodel)
Y una plantilla pantalla con una firma como esta:
@model MvcApplication1.Models.SomeViewModel
Aparece un error que dice "el elemento del modelo es del tipo List<SomeViewModel>
pero este diccionario requiere un modelo del tipo SomeViewModel
".
Lo que tiene sentido, pero esperaba que la inteligencia de plantillas incorporada de MVC entrara en acción, veo que es un IEnumerable
de algo y me gusta llamar a mi plantilla N cantidad de veces, como suele ser para Html.DisplayFor
sin la pista.
¿Parece que [UIHint]
anula esa funcionalidad?
Obviamente puedo apuntar a otra plantilla que acepta la colección, y llama a Html.DisplayForModel()
, básicamente emulando las habilidades de MVC. Pero espero evitar eso. Honestamente, preferiría hacer un ciclo foreach que tener esa plantilla de 1 línea "envoltura".
¿Alguna idea mejor?
Es como si quisiera decir: "Hola MVC, renderiza una plantilla para cada uno de estos tipos. Pero en lugar de usar nombres convencionales para encontrar la plantilla, aquí hay una pista".
así que no hay manera de aprovechar MVC incorporado en la inteligencia de plantillas (bucle implícito) mientras usas uihint? – RPM1984
No, no en mi conocimiento. Incluso si quisiera implementarlo, ¿qué debería representar para rodear todos los elementos? En algunos casos debe ser una tabla, en otros casos un ul/ol. – mathieu
La cosa es que ya tengo una plantilla de visualización para 'SomeViewModel', pero la razón por la que estoy usando UIHint es porque quiero sobrescribir esta plantilla predeterminada con la nueva. Las plantillas predeterminadas para una colección simplemente renderizarán la plantilla individual N veces. No toma decisiones sobre ul/table. Simplemente quiero renderizar una ** plantilla ** diferente N veces. pero parece que no se puede hacer sin un bucle for, lo que es una mierda. Siempre trato de evitar los bucles. – RPM1984