2011-05-31 3 views
0

Je veux créer un dropdownlist dans mon asp.net vue MVC2 et je suis code suivant:asp.net MVC2 dropdownlistfor

foreach (var whiteout in Model) 
     { 
%> 
<tr> 
    <td> 
     <%= whiteout.Field.NiceName%> 
     <% Html.DropDownListFor("anyname", Model); %> 

<% 
       } 
      } 
%> 

mais je reçois erreur deuxième paramètre est incorrect. Le deuxième paramètre est une liste. Voici comment le modèle est déclaré en haut de la vue partielle:

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<IEnumerable<EnviroTracker.Entities.Whiteout>>" %> 

Suggérez comment résoudre ce problème?

Répondre

0

Une aide DropDownListFor prend SelectList comme second argument et une expression lambda à une propriété simple d'abord:

<%= Html.DropDownListFor(
    x => x.SomeProperty, 
    new SelectList(Model.SomeList, "ValueProperty", "TextProperty") 
) %> 

Si vous voulez utiliser l'assistant DropDownList faiblement typé vous pouvez spécifier manuellement le nom de la propriété il sera lié à, mais le second argument devrait encore être un SelectList:

<%= Html.DropDownList(
    "SomeProperty", 
    new SelectList(Model.SomeList, "ValueProperty", "TextProperty") 
) %> 
+0

@Darin: Je n'ai pas x => x.SomeProperty place il montre les fonctions x.list/fonctions de collecte parce que mon modèle est une collection – DotnetSparrow

+0

@DotnetSparrow, bien vous devriez alors modifier le type de modèle de vue pour ce partiel si vous voulez utiliser le helper 'DropDownListFor' fortement typé qui est ce que je recommanderais. Vous introduisez donc un autre modèle de vue qui aura deux propriétés: une propriété scalaire à lier et une propriété de collection contenant les valeurs de la liste déroulante qui sera énumérable. Ensuite, vous tapez fortement votre vue sur ce nouveau modèle de vue. –

+0

@Darin: J'ai utilisé ceci: <% = Html.DropDownList ("SomeProperty", new SelectList (Modèle, "FieldID", whiteout.Field.NiceName) )%> et j'obtiens DataBinding: 'EnviroTracker.Entities.Whiteout 'ne contient pas de propriété portant le nom' Temperature '. – DotnetSparrow