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

1voto

femseks Points 963

Je le fais comme ça :

List<SelectListItem> list = new List<SelectListItem>{
new SelectListItem {Selected = true, Text = "Select", Value = "0"},
new SelectListItem {Selected = true, Text = "1", Value = "1"},
new SelectListItem {Selected = true, Text = "2", Value = "2"}
};
return list.ToArray();

La fonction ToArray() s'occupe des problèmes.

1voto

Münich Points 353

Si vous souhaitez transmettre un texte aléatoire à votre liste déroulante, par exemple --Sélectionnez-- vous pouvez facilement le faire en utilisant ce code :

@Html.DropDownListFor(x => x.CategoryId, new SelectList(Model.Categories, "Id", "Name"), "--Select--", new { @class = "form-control" })

0voto

KP. Points 1177

Il se peut que vous ayez une certaine ambiguïté dans vos ViewData :

Jetez un coup d'œil Ici

0voto

Daniel Points 1

La valeur sélectionnée dans le modèle prend l'avantage au lieu de l'élément par défaut. (Je reconnais que je n'ai pas lu tous les messages)

0voto

Mark Points 1

Je ne me souviens plus comment la mvc 1 était configurée, mais il semble qu'elle voulait que la liste de sélection porte le même nom que le champ auquel elle appartient...

Ce que j'ai découvert, comme quelqu'un l'a dit plus haut, c'est que mes listes de sélection ne fonctionnaient pas dans mvc2 lorsque les ViewData qu'elles étaient envoyées avaient le même nom que le champ.

Par exemple :

<%= Html.DropDownListFor((model => model.ForID), (SelectList)ViewData["ForName"]) %>

fonctionne lorsque

<%= Html.DropDownListFor((model => model.ForID), (SelectList)ViewData["ForID"]) %>

ne fonctionne pas car le nom du ViewData "ForID" est le même que celui du champ pour lequel il fonctionne.

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