使用MVC3我發現設置SelectList的選定值正確呈現HttpGet上的視圖,但無法在HttpPost上正確呈現。我已經檢查了模型,然後將它們轉發到HttpPost上的視圖,並且它們正在被正確更新,但似乎視圖並未正確呈現所選標記。爲什麼SelectList SelectedValue在HttpGet上工作,但不在HttpPost上工作?
在HttpPost上,<select>
與其在任何編輯之後但在提交表單之前存在完全相同。執行HttpPost方法中的m.SelectedWidgetId = 2;
,更新模型,但不反映在視圖中。
我在這裏錯過了什麼?
型號:
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);
}
在asp.net MVC的SelectList的的SelectedValue
真棒,解決了我的問題,非常感謝。 – 2011-05-05 06:34:50
@Darin - 你是怎麼變得如此聰明? :) – Sam 2011-11-06 00:01:58