正如womp所说,浏览器只会提交下拉列表的选定值。这很容易被默认模型绑定器绑定,见下文。
如果您没有编辑客户端上的 PossibleValues 列表,则无需将它们提交回来。如果您需要重新填充列表,请使用您最初填充字典的相同方法在您的帖子操作中执行服务器端。
例如在你的页面:
<%@ Page Language="C#" Inherits="System.Web.Mvc.ViewPage<ViewModel1>" %>
<!-- some html here -->
<%= Html.DropDownListFor(x => x.SelectedKey, new SelectList(Model.PossibleValues, "key", "value"))%>
在您的控制器中
[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);
}
其中 GetDictionary() 是一种返回填充的 Dictionary 对象的方法。
有关更多详细信息,请参阅此类似问题