2010-10-08 6 views
0

J'ai cette ligne de code à mon avis mais cela ne fonctionne pas. Il ne cesse de lancer cette erreur:ASP .NET HTML.DropDownListFor

The ViewData item that has the key 'Material.Modelo.Categoria.Familia_Id' is of type 'System.Int32' but must be of type 'IEnumerable'

<%= Html.DropDownListFor(model => model.Material.Modelo.Categoria.Familia_Id, 
            Model.Familias, 
            " -- Seleccione -- ")%> 

Model.Familias est en fait un SelectList et model.Material.Modelo.Categoria.Familia_Id est un entier.

Des idées?

Thnx

Répondre

0

Html.DropDownListFor attend à passer une collection (quelque chose qui imlements IEnumberable) afin qu'il puisse construire une liste déroulante de ces articles.

Vous lui transmettez un nombre entier unique.

En supposant que vous ayez un menu déroulant contenant un seul élément, ajoutez cet entier à une collection quelconque et transmettez la collection. Une liste ou toute autre collection implémentant IEnumerable fonctionnera correctement.

Vérifiez ce post ...

Populating ASP.NET MVC DropDownList

... Pour plus de détails sur la façon de remplir l'un de ces derniers.

+0

Le premier Param dans DropDownListFor est la propriété du modèle que vous voulez renvoyer au contrôleur sélectionné, la SECONDE est la collection IEnumerable. Il me semble qu'elle le fait bien. –

+0

Exactement ... et en fait j'ai ceci: <% = Html.DropDownListFor (model => model.Material.Modelo_Id, Model.Modelos, "- Seleccione -")%> et cela fonctionne bien. Alors, que se passe-t-il? – tina

+0

Notez l'utilisation de SelectList dans la réponse à laquelle je me réfère. Je pense que c'est la différence. –