【问题标题】:ASP.NET MVC Dropdownlist retain the selected value in the browser after postASP.NET MVC Dropdownlist 在发布后保留浏览器中的选定值
【发布时间】:2010-05-19 15:35:18
【问题描述】:

我在我的 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

谢谢

【问题讨论】:

    标签: asp.net-mvc model-view-controller


    【解决方案1】:

    这是所有 html 助手的正常行为:他们将查看 POST 的值以执行绑定。这意味着如果您使用标准助手,您不能更改控制器操作中的值并期望它反映在视图中。如果 POST 中有一个值 SelectedRole,它将始终使用该值,并且完全忽略下拉列表的最后一个参数。

    您可以编写自己的帮助程序来实现此目的或在 POST 之后重定向。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-01-13
      • 2012-12-05
      • 2011-01-09
      • 2013-12-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多