2013-10-15 23 views
0

我有一个选择列表构建器,它从Enum类型填充了一个新的选择列表,并将一个枚举值选作参数。即使对象已选择= true,我的MVC SelectList不会选择?

它然后被添加到一个DropDownList如下

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

的问题是当我加载视图,我已经在功能输出检查,我可以看到正确的值具有选择的标记其不选择如下所示。

虽然在我看来负载我得到这个

enter image description here

我无法想象我要去的地方错了,因为一切看起来,我怀疑它应该除了我的观点是......? !?!

这是我的浏览器

enter image description here

更新输出: 交换DropDownList的帮手

@Html.DropDownList("Status") 

的伎俩,但我失去我的自定义样式,这是需要..为什么不选择其他方法?

+0

把属性名称是否使用自定义下拉列表控件? – Andrei

+0

不,我只是使用内置的,我会将输出添加到我的问题。 –

回答

1

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

如果您发现隐藏请选择标记,您应该更正自定义下拉列表的样式。

+0

隐藏选择标签,我不确定我关注你?我将添加我的输出标记,以便您可以看到我拥有的内容。如果它有任何相关性,我只使用Bootstrap样式? –

1

我已经找到了导致问题的原因,事实上我的Html.SelectList与包含我的自定义SelectList结果的ViewBag属性名称相同。将ViewBag项目名称从状态更改为状态,并将我的助手调用至

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

窍门!它必须是MVC约定中的某种命名冲突!我希望这可以帮助任何有同样问题的人,因为我在网上发现了几个类似问题,但没有解决方案!

0

假设您提供的字段名称的值将由Razor引擎绑定到下拉列表中,以便您需要提供要在下拉列表中绑定的属性名称。尝试了这一点

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

其中ACCOUNTID,帐户名是内viewbag.Status属性字段如果帐户名会显示在网页和文本ACCOUNTID将被绑定为值。

在你的情况检查viewbag.Status和存在于

+0

如果你看看我在上面的方法截图中如何限制选择列表,你会看到我在传递正确值的时候这样做。 但无论如何,谢谢:) –