2008-11-17 6 views

Répondre

5

Je crois que vous demandez comment conserver la valeur d'une liste déroulante après qu'un formulaire a été soumis et ré-affiché. Si oui, s'il vous plaît voir ci-dessous pour une TRÈS SIMPLE exemple:

Créer une nouvelle application MVC (en utilisant bêta MVC) et placer les éléments suivants dans HomeController:

private Dictionary<string, string> getListItems() 
{ 
    Dictionary<string, string> d = new Dictionary<string, string>(); 
    d.Add("Apple", "APPL"); 
    d.Add("Orange", "ORNG"); 
    d.Add("Banana", "BNA"); 
    return d; 
} 

public ActionResult Index() 
{ 
    Dictionary<string, string> listItems = getListItems(); 
    SelectList selectList = new SelectList(listItems, "Value", "Key"); 
    ViewData["FruitDropDown"] = selectList; 

    return View(); 
} 

[AcceptVerbs(HttpVerbs.Post)] 
public ActionResult Index(FormCollection form) 
{ 

    string selectedItem = form["FruitDropDown"]; 

    Dictionary<string, string> listItems = getListItems(); 
    SelectList selectList = new SelectList(listItems, "Value", "Key", selectedItem); 
    ViewData["FruitDropDown"] = selectList; 

    ViewData["Message"] = "You selected ID:" + selectedItem; 

    return View(); 

} 

Et placer dans la maison \ Index. ASPX entre les balises maincontent:

<div><strong><%= ViewData["Message"] %></strong></div> 

<% using (Html.BeginForm()) { %> 
<%= Html.DropDownList("FruitDropDown","(select a fruit)") %> 
<input type="submit" value="Submit" /> 
<% } %> 
+0

Comment cela serait-il différent si vous utilisiez un Modèle comme entrée pour l'Action et non FormCollection? De mon côté, il donne une "Référence d'objet non définie sur une instance d'un objet" lorsque View est généré à nouveau après l'échec de la validation. – IEnumerator

+0

Vous avez raison. J'ai mis à jour le code pour MVC 1 (modifié à partir de la version bêta) – BigJoe714

0

Je voulais juste ajouter le BigJoe714 a raison, sauf le ... nouveau SelectList (listItems, "Value", "clé", selectedItem) a la clé/valeur appliquée

Le constructeur prend ces params pour cette surcharge

public SelectList(IEnumerable items, string dataValueField, string dataTextField, object selectedValue); 

La valeur des données devrait être la clé alors que le texte de données doit être la valeur.

Mais sinon, merci beaucoup! Une autre fonctionnalité kicka $$ de asp.net mvc

Questions connexes