使用 MVC3,我发现设置 SelectList 的选定值可以正确地在 HttpGet 上呈现视图,但无法在 HttpPost 上正确呈现。在将模型转发到 HttpPost 上的视图之前,我已经检查了它们并且它们正在正确更新,看来视图没有正确呈现所选标签。
在 HttpPost 上,<select>
在任何编辑之后但在提交表单之前呈现完全一样的内容。在m.SelectedWidgetId = 2;
HttpPost 方法中执行,更新模型,但不反映在 View 中。
我在这里想念什么?
模型:
public class WidgetModel
{
private Widget[] Widgets {
get
{
return new Widget[] {
new Widget { Id=1, Name="Item 1" },
new Widget { Id=2, Name="Item 2" },
new Widget { Id=3, Name="Item 3" }
};
}
}
public SelectList WidgetList
{
get
{
return new SelectList(Widgets.ToList(), "Id", "Name", SelectedWidgetId);
}
}
public int SelectedWidgetId { get; set; }
}
看法:
@model thisProject.Models.WidgetModel
@using (Html.BeginForm())
{
@Html.DropDownListFor(m => m.SelectedWidgetId, Model.WidgetList, "Select...");
<input type='submit' />
}
控制器方法;
public ActionResult Widget()
{
var m = new WidgetModel();
m.SelectedWidgetId = 1;
return View(m);
}
[HttpPost]
public ActionResult Widget(WidgetModel m)
{
m.SelectedWidgetId = 2;
return View(m);
}