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

3voto

slimflem Points 309

Toutes ces réponses semblent excellentes, mais il semble que le contrôleur prépare des données pour une vue dans un format structuré bien connu, alors que la vue doit simplement itérer un IEnumerable<> fourni par le modèle et construire une liste de sélection standard, puis laisser DefaultModelBinder vous fournir l'élément sélectionné via un paramètre d'action. Oui, non, pourquoi pas ? Séparation des préoccupations, oui ? Il semble étrange que le contrôleur doive construire quelque chose d'aussi spécifique à l'interface utilisateur et à la vue.

3voto

Munk Points 31

Simple :

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

2voto

Tony Borf Points 1950

Je l'ai fait fonctionner comme ça et je n'ai eu aucun problème,

public class myViewDataObj
    {
        public SelectList PageOptionsDropDown { get; set; }
    }

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

            ViewData["myList"] = myViewData.PageOptionsDropDown;
            return View();
        }

y

<%=Html.DropDownList("myList") %>

ça a aussi marché si vous faites ça,

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

            ViewData["myListValues"] = myViewData.PageOptionsDropDown;
            ViewData["myList"] = "15";
            return View();
        }

y

<%=Html.DropDownList("myList",(IEnumerable<SelectListItem>)ViewData["myListValues"]) %>

1voto

Cadoo Points 476

En utilisant votre exemple, cela a fonctionné pour moi :

contrôleur :

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

vue :

<%= Html.DropDownList("PageOptionsDropDown")%>

1voto

Cactus Points 11
MonthRepository monthRepository = new MonthRepository();
IQueryable<MonthEntity> entities = monthRepository.GetAllMonth();
List<MonthEntity> monthEntities = new List<MonthEntity>();

foreach(var r in entities)
{
    monthEntities.Add(r);
}

ViewData["Month"] = new SelectList(monthEntities, "MonthID", "Month", "Mars");

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