Используя MVC3, я обнаружил, что установка выбранного значения SelectList правильно отображает представление в HttpGet, но не может правильно отображаться в HttpPost.Я проверил модель до того, как она будет перенаправлена в представление на HttpPost, и они корректно обновляются, просто кажется, что представление неправильно отображает выбранный тег.
На HttpPost <select>
отображается точнокак он существовал после любых изменений, но до представления формы.m.SelectedWidgetId = 2;
в методе HttpPost выполняется, обновляет модель, но не отображается в представлении.
Что мне здесь не хватает?
Модель:
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);
}