Asp.net mvc ASP.NET MVC Dropdownlist在发布后在浏览器中保留选定的值

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]

我在我的aspx页面中建立了一个下拉列表,如下所示

<%= 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
,则始终使用该值,并完全忽略下拉列表的最后一个参数

您可以编写自己的助手来实现这一点,也可以在发布后重定向