128 votes

Comment puis-je faire fonctionner cette SelectList ASP.NET MVC ?

Je crée une liste de sélection dans mon contrôleur, pour l'afficher dans la vue.

J'essaie de le créer à la volée, une sorte de chose ... comme ça ...

myViewData.PageOptionsDropDown = 
   new SelectList(new [] {"10", "15", "25", "50", "100", "1000"}, "15");

Il compile, mais la sortie est mauvaise...

<select id="PageOptionsDropDown" name="PageOptionsDropDown">
    <option>10</option>
    <option>15</option>
    <option>25</option>
    <option>50</option>
    <option>100</option>
    <option>1000</option>
</select>

Vous avez remarqué qu'aucun élément n'est sélectionné ?

Comment puis-je réparer cela ?

1 votes

Six réponses... une favorisée... pas de upvotes :/ Je lui donne un +1.

0 votes

0voto

FruitDealer Points 26

Une explication possible est que la valeur de la liste de sélection à laquelle vous êtes lié n'est pas une chaîne.

Dans cet exemple, le paramètre "PageOptionsDropDown" est-il une chaîne dans votre modèle ? Parce que si ce n'est pas le cas, la valeur sélectionnée dans la liste ne sera pas affichée.

0voto

Simon Halsey Points 4114

Si vous regardez dans le code source de MVC 2 la méthode d'extension Html.DropDownList, elle ne vérifie jamais la propriété SelectedValue de la classe SelectList. Elle n'essaiera jamais d'établir une correspondance avec votre modèle.

Toutes les solutions ci-dessus sont des variations sur un thème, c'est-à-dire comment envoyer un ensemble de données à la vue pour une liste déroulante & elles sont toutes aussi bonnes les unes que les autres (plus ou moins).

Le problème est dans la vue. Soit vous créez votre propre méthode d'extension DropDownList qui respecte la valeur de sélection que vous avez définie, soit vous l'itérez à la main. Lequel des deux fonctionne le mieux pour vous.

0voto

Mark Points 351

Si vous avez une collection dans votre modèle et que votre vue est fortement typée, une variante de cette méthode fonctionnera :

@Html.DropDownListFor(x => x.RegionID, 
    new SelectList(Model.Regions,"RegionID", "RegionName", Model.RegionID))

-ou-

@Html.DropDownList("RegionID", 
    new SelectList(Model.Regions, "RegionID", "RegionName", Model.RegionID))

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X