Vous pouvez obtenir la valeur sélectionnée dans une liste déroulante de la même manière que pour les zones de texte.
En utilisant le modèle par défaut de liaison
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult GetValueExample(string MyList) {
//MyList will contain the selected value
//...
}
ou d'un FormCollection
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult GetValueExample(FormCollection form) {
string val = form["MyList"];
//...
}
ou de la demande
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult GetValueExample(string MyList) {
string val = Request.Form["MyList"]; //or
val = Request["MyList"];
//...
}
Si votre liste déroulante est nommée "Ma Liste".
<%= Html.DropDownList("MyList", MyItems) %>
ou HTML droite
<select name="MyList">
<option value="1">Item 1</option>
<option value="2">Item 2</option>
</select>
Le navigateur ne soumettra la valeur sélectionnée dans la liste déroulante et non toutes les autres valeurs. Pour obtenir la liste de tous les autres éléments, vous devez appeler le code qui a peuplé la liste en premier lieu (en supposant que vous avez utilisé Html.DropDownList()).
Mise à jour
[AcceptVerbs(Http.Get)]
public ActionResult GetValueExample() {
ViewData["MyItems"] = GetSelectList();
return View();
}
[AcceptVerbs(Http.Get)]
public ActionResult GetValueExample(string MyList) {
//MyList contains the selected value
SelectList list = GetSelectList(); //list will contain the original list of items
//...
}
private SelectList GetSelectList() {
Dictionary<string, string> list = new Dictionary<string, string>();
list.Add("Item 1", "1");
list.Add("Item 2", "2");
list.Add("Item 3", "3");
return new SelectList(list, "value", "key");
}
//...
<%= Html.DropDownList("MyList", ViewData["MyItems"] as SelectList) %>
Mais, parlez-vous de l'élément sélectionné? Puis, comment puis-je récupérer tous les éléments de la liste? – Josh
Comme je l'ai dit, le navigateur soumettra uniquement la valeur de l'élément sélectionné au serveur. La seule façon d'obtenir tous les éléments de la liste est de faire la même chose que vous avez fait pour les mettre dedans (peu importe ce que c'était). Voir ma mise à jour pour un exemple. –
Merci pour votre réponse très complète :) – Max