Asp.net mvc ASP.NET MVC Dropdownlist在发布后在浏览器中保留选定的值
我在我的aspx页面中建立了一个下拉列表,如下所示Asp.net mvc ASP.NET MVC Dropdownlist在发布后在浏览器中保留选定的值,asp.net-mvc,model-view-controller,Asp.net Mvc,Model View Controller,我在我的aspx页面中建立了一个下拉列表,如下所示 <%= Html.DropDownList("SelectedRole", new SelectList((IEnumerable)Model.roles, "RoleId", "RoleName", Model.SelectedRole), "")%> 对于首次获取,它可以正常工作,并且选择了第一个默认值;然后我从下拉列表中选择项并提交表单 控制器正确绑定值 public ActionResult About([Bind]
<%= Html.DropDownList("SelectedRole", new SelectList((IEnumerable)Model.roles, "RoleId", "RoleName", Model.SelectedRole), "")%>
对于首次获取,它可以正常工作,并且选择了第一个默认值;然后我从下拉列表中选择项并提交表单
控制器正确绑定值
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)
}
public ActionResult关于([Bind]Roles r)
{
//r、 SelectedRole=页面中的选定值。
//角色r=新角色();
r、 角色=新列表();
r、 角色。添加(新角色(1,“一”);
r、 添加(新角色(2,“两”);
r、 添加(新角色(3,“三”);
r、 添加(新角色(4,“四”);
r、 SelectedRole=null;
返回视图(r)
}
然后我取消选中的项目并返回我的视图,但仍然选中了上一个选中的项目(尽管我取消了它)
你知道我是做错了什么还是MVC中的一个bug吗
我正在使用ASP.NET MVC 1
谢谢这是所有html助手的正常行为:他们将查看发布的值以执行绑定。这意味着您不能更改控制器操作中的值,并且如果使用标准辅助对象,则不能期望该值反映在视图上。如果帖子中有一个值
SelectedRole
,则始终使用该值,并完全忽略下拉列表的最后一个参数
您可以编写自己的助手来实现这一点,也可以在发布后重定向