Acredito que isso seja muito simples, mas não consigo encontrar a maneira certa de mostrar o nome de exibição de um item em uma lista dentro do meu modelo.
Meu modelo simplificado:
public class PersonViewModel
{
public long ID { get; set; }
private List<PersonNameViewModel> names = new List<PersonNameViewModel>();
[Display(Name = "Names")]
public List<PersonNameViewModel> Names { get { return names; } set { names = value; } }
}
e nomes:
public class PersonNameViewModel
{
public long ID { get; set; }
[Display(Name = "Set Primary")]
public bool IsPrimary { get; set; }
[Display(Name = "Full Name")]
public string FullName { get; set; }
}
Agora, gostaria de fazer uma tabela para mostrar todos os nomes de uma pessoa e obter o DisplayNameFor FullName. Obviamente,
@Html.DisplayNameFor(model => model.Names.FullName);
não funcionaria, e
@Html.DisplayNameFor(model => model.Names[0].FullName);
será interrompido se não houver nomes. Existe uma 'melhor maneira' de obter o nome de exibição aqui?
List<PersonNameViewModel>
você tiver umIEnumerable<PersonNameViewModel>
, também é seguro usar a expressãomodel => model.Names.First().FullName
. Isso está correto? Dito isso, acho que gosto dodummyModel
melhor exemplo dos três. Caso contrário, você pode ter várias propriedades nas quais precisa digitar ou colarmodel.Names[0].
. Então, novamente, talvez você deva refatorar a seção para uma visualização parcial que aceite oList
ouIEnumerable
como seu modelo.