0

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

然后将其添加到 DropDownList 如下

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

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

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

在此处输入图像描述

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

这是我浏览器中的输出

在此处输入图像描述

更新:将 DropDownList 助手交换为

@Html.DropDownList("Status")

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

4

3 回答 3

1

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

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

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

于 2013-10-15T11:18:17.613 回答
1

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

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

于 2013-10-15T10:53:30.980 回答
0

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

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

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

在您的情况下,检查viewbag.Status并输入存在于

于 2013-10-15T11:21:01.697 回答