Je pense que c'est assez simple, je n'arrive tout simplement pas à trouver la bonne façon d'afficher le nom d'affichage d'un élément dans une liste de mon modèle.
Mon modèle simplifié:
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; } }
}
et noms:
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; }
}
Maintenant, j'aimerais créer une table pour afficher tous les noms d'une personne et obtenir le DisplayNameFor FullName. Évidemment,
@Html.DisplayNameFor(model => model.Names.FullName);
ne fonctionnerait pas, et
@Html.DisplayNameFor(model => model.Names[0].FullName);
se cassera s'il n'y a pas de noms. Existe-t-il un «meilleur moyen» d'obtenir le nom d'affichage ici?
List<PersonNameViewModel>
vous avez unIEnumerable<PersonNameViewModel>
, alors il est également prudent d'utiliser l'expressionmodel => model.Names.First().FullName
. Est-ce correct? Cela dit, je pense que j'aime ledummyModel
meilleur exemple des trois. Sinon, vous pourriez avoir plusieurs propriétés dans lesquelles vous devez taper ou collermodel.Names[0].
. Là encore, vous devriez peut-être refactoriser la section en une vue partielle qui accepte leList
ouIEnumerable
comme modèle.