2010-05-19 88 views
0

后,我建立一个下拉列表,在我的aspx页面如下ASP.NET MVC DROPDOWNLIST保留在浏览器中选择的值后

<%= 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) 
} 

然后我抵消所选择的项目,并返回我的观点,但仍比上一次选择的项目选择(虽然我没有废掉吧)

任何想法如果我做错了什么或者它是MVC中的错误?

我使用ASP.NET MVC 1

感谢

回答

2

这是所有HTML辅助的正常行为:他们将看张贴的值进行绑定。这意味着如果您使用标准助手,则无法更改控制器操作中的值,并期望它反映在视图上。如果POST中的值为SelectedRole,则始终使用此值,并且完全忽略下拉菜单的最后一个参数。

你可以写你自己的帮手来实现这个或POST后的重定向。