Non è possibile associare un elenco a discesa a un dizionario. Non ha senso. Per generare un elenco a discesa sono necessari 2 elementi: una proprietà scalare per associare il valore selezionato a e una raccolta per associare le opzioni dell'elenco a discesa. Hai solo la seconda di quelle due cose che è il dizionario. Quindi non puoi usare un helper fortemente tipizzato.
Si potrebbe fare la seguente bruttezza:
@Html.DropDownList("SelectedValue", new SelectList(MyDictionary, "Key", "Value"))
ma naturalmente un approccio di gran lunga migliore sarebbe quella di utilizzare un modello di vista:
public class MyViewModel
{
public string SelectedValue { get; set; }
public SelectList Values { get; set; }
}
che si popolano nella vostra azione di controllo:
public ActionResult Foo()
{
Dictionary<string, string> dic = ...
var model = new MyViewModel
{
Values = new SelectList(dic, "Key", "Value")
};
return View(model);
}
e infine nella visualizzazione fortemente digitata:
@model MyViewModel
@Html.DropDownListFor(x => x.SelectedValue, Model.Values)
fonte
2011-10-04 19:57:18
"Si può non associare un elenco a discesa a un dizionario. Non ha senso. "Potresti spiegare perché, perché possiamo farlo facilmente in Web Form ASP.NET. –