我在我的aspx页面中构建了一个下拉列表,如下所示
<%= Html.DropDownList("SelectedRole", new SelectList((IEnumerable)Model.roles, "RoleId", "RoleName", Model.SelectedRole), "")%>
它适用于第一个Get并且选择了第一个默认值;然后我从下拉列表中选择项目并提交表格。
控制器正确绑定值
public ActionResult About([Bind] Roles r)
{
//r.SelectedRole = the selected value in the page.
//Roles r = new Roles();
r.roles = new List<Role>();
r.roles.Add(new Role(1, "one"));
r.roles.Add(new Role(2, "two"));
r.roles.Add(new Role(3, "three"));
r.roles.Add(new Role(4, "four"));
r.SelectedRole = null;
return View(r)
}
然后我使所选项目无效并返回我的视图,但仍然选择了之前选择的项目(虽然我确实将其取消)
任何想法,如果我做错了或MVC中的错误?
我正在使用ASP.NET MVC 1
由于
答案 0 :(得分:2)
这是所有html帮助程序的正常行为:它们将查看POSTed值以执行绑定。这意味着您无法更改控制器操作中的值,并且如果您使用标准帮助程序,则希望它反映在视图上。如果POST中有值SelectedRole
,则始终使用此值,并且完全忽略下拉列表的最后一个参数。
您可以编写自己的帮助程序来实现此目的,或在POST后重定向。