Wie womp sagte, nur ein Browser den gewählten Wert einer Dropdown-Liste vorlegen wird. Dies ist leicht an die Standardmodellmappe gebunden, siehe unten.
Wenn Sie die PossibleValues-Liste auf dem Client nicht bearbeiten, müssen Sie sie nicht zurück senden. Wenn Sie die Liste erneut füllen müssen, führen Sie die Server-Seite in Ihrer Post-Aktion aus, indem Sie dieselbe Methode verwenden, mit der Sie das Dictionary ursprünglich gefüllt haben.
Zum Beispiel in Sie Seite:
<%@ Page Language="C#" Inherits="System.Web.Mvc.ViewPage<ViewModel1>" %>
<!-- some html here -->
<%= Html.DropDownListFor(x => x.SelectedKey, new SelectList(Model.PossibleValues, "key", "value"))%>
In Ihrem Controller
[AcceptVerbs(HttpVerbs.Get)]
public ViewResult Edit() {
var model = new ViewModel1 {
PossibleValues = GetDictionary() //populate your Dictionary here
};
return View(model);
}
[AcceptVerbs(HttpVerbs.Post)]
public ViewResult Edit(ViewModel1 model) { //default model binding
model.PossibleValues = GetDictionary(); //repopulate your Dictionary here
return View(model);
}
Wo GetDictionary() ist eine Methode, die Ihre bevölkerten Dictionary-Objekt zurückgibt.
See this similar question for more details
Sind Sie mit ASP.NET MVC Version 1 oder 2? –
Ich benutze Version 2 – jameszhao00