2014-09-02 1 views
1

Mon point de vue estHtml.DisplayForModel jeter InvalidOperationException

@model List<string> 
... 
@Html.DisplayForModel("Name") 
... 

Mon modèle d'affichage "Nom" est

@model string 
<span>@Model</span> 

Ce ne fonctionne pas, je reçois:

L'élément de modèle adopté dans le dictionnaire est de type 'System.Collections.Generic.List 1 [chaîne de caractères] ', mais ce dictionnaire nécessite un élément de modèle de type' chaîne '

Quelque chose de mal que je fais ici?

+1

Raison possible: Modèle == null – Andrei

Répondre

2

Le modèle de votre première liste est de type List<string> et vous transmettez ce modèle au modèle d'affichage. Mais le modèle d'affichage nécessite un modèle de type string. Votre modèle d'affichage devrait également attendre une liste de chaînes:

@model List<string> 
@foreach(var item in Model) 
{ 
    <span>@item</span> 
} 
+0

Je pensais que DisplayFor() peut être utilisé pour afficher la liste des éléments dans le modèle de réponse ici: http: // stackoverflow.com/questions/11261590/mvc-razor-foreach – santhudr

+0

@santhudr que se passe-t-il si vous changez le type de modèle de la vue à 'IEnumerable ', puis l'appelez avec '@ Html.DisplayFor (x => x," Name ") 'au lieu d'utiliser' @ Html.DisplayForModel ("Name") '? –

+0

Je viens de trouver un autre poste avec le même problème - http://stackoverflow.com/questions/8678802/why-is-my-displayfor-not-looping-through-my-ienumerabledatetime. C'est parce que j'ai donné le nom du template. @ Html.DisplayForModel() fonctionne très bien! :) – santhudr

Questions connexes