8
votes

Mvc html.displayName pour un modèle complexe

J'ai un modèle avec un type complexe, c'est-à-dire utilisateur / adresses / liste des adresses xxx

sur ma vue, je affiche ce xxx < p> La rue displayNameforfor / ville / état ne fonctionne pas.

Quel est le moyen approprié d'obtenir l'affichage pour un sous-objet?

TIA J


3 commentaires

Essayez d'utiliser un simple pour boucle, au lieu de foreach .


Que se passe-t-il, c'est que vous faites @ html.displaynamefor (m => modèle.addresses.street.first ()) ? Je ne fais normalement que taper manuellement les étiquettes.


Je veux utiliser Dataannotations pour les noms. Essayer de toujours garder des chaînes comme ça hors du code.


5 Réponses :


-1
votes

La manière dont vous utilisez displayNamefor est fausse. Adresses est une liste et il n'a pas de propriétés telles que rue , Ville , état . Donc, comment vous attendez-vous au nom de s'afficher.

n'est-ce pas simple directement à l'aide des noms dans la vue au lieu d'utiliser l'assistant dans ce cas.


1 commentaires

Alors, quelle est votre solution?



11
votes

J'ai changé xxx

à xxx

n'utilise pas @ html.displaynamefor (m => model.addresses [ 0] .street) Parce que si vous devez éditer la première ligne, vous ne pourrez pas cela.

Tout fonctionne comme prévu maintenant.


2 commentaires

Lorsque j'essaie d'utiliser le [0], cela me donne une erreur d'exécution "Impossible d'appliquer une indexation avec [] à une expression de type 'system.data.objects.dataclasses.EntyCollection '"


Et si les adresses sont vides? Lorsque la directive @model reçoit un iTNumerable, il le chiffre ...



1
votes

Vous pouvez également utiliser la LINQ pour éviter l'erreur d'indexation. J'ai utilisé ceci est mon code - xxx pré>

et l'erreur suivante est parti. P>

@Html.DisplayName("Street")


0 commentaires

1
votes

Cela pourrait être meilleur: xxx

fonctionnera également au cas où la liste est vide


1 commentaires

Cela n'entraînerait-il pas à un NRE si la liste est vide?



0
votes

Pour afficher le nom de la propriété Adresse, vous pouvez définir une adresse vide modèle modèle xxx

et l'utiliser comme ceci xxx < / pré>


0 commentaires