【问题标题】:Html.DropDownList selected value does not work when i specify the name当我指定名称时,Html.DropDownList 所选值不起作用
【发布时间】:2013-01-30 20:34:58
【问题描述】:

我正在尝试在呈现页面时从下拉列表中选择特定选项。

在我的控制器上,我有这个代码:
ViewBag.PropertyId = new SelectList(db.Properties, "PropertyId", "PropertyName", id.ToString());

在我看来,这行不通。所选选项始终是第一个选项。
@Html.DropDownList("PropertyId", (SelectList)ViewBag.PropertyId)

这在我看来确实有效,选择了正确的选项。但是,我无法保存,因为我需要选择列表的名称为 PropertyId,以便正确发布。
@Html.DropDownList("sadgfsadsaf", (SelectList)ViewBag.PropertyId)

有人可以帮我理解我应该在这里做什么吗?我知道我应该使用视图模型而不是 Viewbag,但我只想先让它工作。

谢谢

【问题讨论】:

    标签: asp.net-mvc razor asp.net-mvc-4


    【解决方案1】:

    我之前也遇到过同样的问题,这是名称冲突。尝试更改您的下拉列表和/或值名称,看看会发生什么。

    【讨论】:

    • 啊,谢谢! ViewBag.PropertyId 导致与名为 PropertyId 的选择列表发生冲突。令人困惑,因为它是默认的脚手架。非常感谢。
    • 也去过那里。很棒的第一篇文章。提供代码示例会更好。
    【解决方案2】:

    当您再次向同一个控制器和视图回帖,但又想更改控制器中的状态时,也可能会发生名称冲突。

    它会将发布的模型状态保留在 ModelState 对象中,并在渲染视图中恢复发布的状态。要更改控制器中的模型状态,您必须执行 ModelState.Remove("PropertyId") 或立即设置:

    ModelState["PropertyId"].Value = new System.Web.Mvc.ValueProviderResult(id.ToString(), id.ToString(), System.Globalization.CultureInfo.CurrentCulture);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-26
      • 2013-11-03
      • 2016-04-17
      • 1970-01-01
      • 2017-12-21
      • 2013-08-03
      相关资源
      最近更新 更多