Modelo de exibição personalizado do ASP.NET MVC 3 com UIHint - para loop obrigatório?
Se eu tiver um ViewModel como isso
public class MyViewModel
{
[UIHint("SomeTemplate")]
public ICollection<SomeViewModel> Submodel { get; set; }
}
E um @ fortemente tipaVisã com uma linha de HTML como esta:
@Html.DisplayFor(model => model.Submodel)
Edisplay template com uma assinatura como esta:
@model MvcApplication1.Models.SomeViewModel
Eu recebo um erro dizendo "o item do modelo é do tipoList<SomeViewModel>
mas este dicionário requer um modelo do tipoSomeViewModel
. ".
O que faz sentido, mas eu esperava que a inteligência embutida no modelo do MVC fosse lançada, veja que é umIEnumerable
de algo e trabalhe para chamar meu modelo N vezes, como costuma acontecer paraHtml.DisplayFor
sem a dica.
Então parece que[UIHint]
substitui essa funcionalidade?
Obviamente, posso apontar para outro modelo que aceita a coleção e chamaHtml.DisplayForModel()
, basicamente emulando a inteligência do MVC. Mas espero evitar isso. Honestamente, eu preferiria fazer um loop foreach do que ter esse modelo de "wrapper" de 1 linh
Algumas idéias melhores?
É como eu quero dizer: "Ei MVC, renderize um modelo para cada um desses caras. Mas, em vez de usar a convenção de nomes para encontrar o modelo, aqui está uma dica".