【问题标题】:My MVC SelectList not selecting even though object has selected = true?即使对象已选择 = true,我的 MVC SelectList 也没有选择?
【发布时间】:2013-10-15 10:47:38
【问题描述】:

我有一个选择列表构建器,它从 Enum 类型填充了一个新的选择列表,并采用一个枚举值作为参数来选择。

然后将其添加到 DropDownList 中,如下所示

@Html.DropDownList("Status",ViewBag.Status as SelectList,"Select Status..", new { @class = "form-control" })

问题是当我加载视图时它没有选择,我检查了函数输出,我可以看到正确的值具有如下所示的选定标记。

虽然当我的视图加载时我得到了这个

我无法想象我哪里出了问题,因为一切看起来都像我怀疑的那样,除了我的观点是......?!?!

这是我浏览器中的输出

更新: 将 DropDownList 助手交换为

@Html.DropDownList("Status")

诀窍是否有效,但我失去了我的自定义样式,这是必需的......为什么它没有选择其他方法?

【问题讨论】:

  • 你使用自定义下拉列表控件吗?
  • 不,我只是使用内置的,我会将输出添加到我的问题中。

标签: c# asp.net-mvc enums html-select selectlist


【解决方案1】:

看起来您有一些自定义下拉样式。你真正的下拉菜单是隐藏的。请查看下拉列表中的 HTML。

如果您发现隐藏的 select 标签,您应该更正自定义下拉菜单的样式。

【讨论】:

  • 隐藏选择标签,我不确定我是否关注你?我将添加我的输出标记,这样你就可以看到我有什么。如果有任何相关性,我只是使用 Bootstrap 样式?
【解决方案2】:

我已经弄清楚是什么导致了这个问题,事实上我的 Html.SelectList 与包含我的自定义 SelectList 结果的 ViewBag 属性具有相同的名称。将 ViewBag 项目名称从 Status 更改为 statuses,并将我的 Helper 调用更改为

@Html.DropDownList("Status",ViewBag.Statuses as SelectList,"Select Status..", new { @class = "form-control" })

成功了!这一定是 MVC 约定中的某种命名冲突!我希望这可以帮助其他有同样问题的人,因为我在网上找到了一些类似问题但没有解决方案的问题!

【讨论】:

    【解决方案3】:

    您应该提供字段名称,其值将由 Razor 引擎绑定到下拉列表,因为您需要在下拉列表中提供要绑定的属性名称。试试这个

    @Html.DropDownList("Status",ViewBag.Status("AccountId","AccountName") as SelectList,"Select Status..", new { @class = "form-control" })
    

    其中 AccountId,AccountName 是 viewbag.Status 内的属性字段,其中 AccountName 将在页面中显示为文本,AccountId 将作为值绑定。

    在您的情况下,检查 viewbag.Status 并将存在的属性名称放入

    【讨论】:

    • 如果您查看我如何在上面的方法屏幕截图中绑定选择列表,您会看到我在传递正确值的同时执行此操作。不过还是谢谢:)
    猜你喜欢
    • 2015-11-07
    • 1970-01-01
    • 1970-01-01
    • 2013-11-25
    • 2015-06-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多