web-dev-qa-db-fra.com

Définition d'une valeur sélectionnée par défaut dans DropDownList dans MVC3

Dans MVC3, j'ai ce code sur mon contrôleur. Il récupère une liste d'IDs\Noms de la table d'installation et crée un ViewBag

var vs = dba.Installation.OrderBy(q => q.InstName).ToList();
ViewBag.Vessels = new SelectList(vs, "InstId", "InstName");

Maintenant, à mon avis. Je veux rendre la liste dans une liste déroulante. J'ai utilisé l'assistant HTML qui fonctionne bien ...

@Html.DropDownList("InstId",(SelectList)ViewBag.Vessels, "- Select one -")

Je dois définir le premier élément de la liste ViewBag en tant que valeur sélectionnée par défaut, au lieu de "- Select one -" text.

Comment puis-je le faire?

Merci d'avance!

9
equisde

Il y a une surcharge pour le constructeur SelectList qui prend 4 arguments. Le dernier est l'objet sélectionné par défaut. Par exemple:

ViewBag.Vessels = new SelectList(vs, "InstId", "InstName", selectedValue);

selectedValue est un objet de tout type figurant dans votre liste.

20
WheretheresaWill

Je dois définir le premier élément de la liste ViewBag en tant que valeur sélectionnée par défaut, au lieu de "- Select one -" text.

Ensuite, vous devez sélectionner le premier élément de votre liste (vs), obtenir son identifiant et l'utiliser en tant que selecedValue dans la liste de sélection:

ViewBag.Vessels = new SelectList(vs, "InstId", "InstName", 
    vs.FirstOrDefault().InstId);
4
von v.

Vous pouvez également créer une classe d'assistance pour la liste déroulante. Une méthode vous permettra de définir le texte comme texte par défaut pour chaque liste déroulante de votre solution.

0
Keren Caelen