Asp.net mvc 4 asp.net mvc如何在手动构建html dropdownlist时获取验证属性

Asp.net mvc 4 asp.net mvc如何在手动构建html dropdownlist时获取验证属性,asp.net-mvc-4,razor,Asp.net Mvc 4,Razor,我正在使用下面的答案构建一个dropdownlist:。这将允许我向不同的添加不同的类和数据注释 然而,最初我正在努力构建。我有 <select name="@Html.NameFor(a=>a.ValueType)" id="@Html.IdFor(a=>a.ValueType)"> </select> 如何在视图中获得所需的注释验证 浏览器中的最终html应如下所示: <select id="ValueType" name

我正在使用下面的答案构建一个dropdownlist:。这将允许我向不同的添加不同的类和数据注释

然而,最初我正在努力构建。我有

<select name="@Html.NameFor(a=>a.ValueType)"
            id="@Html.IdFor(a=>a.ValueType)">
</select>
如何在视图中获得所需的注释验证

浏览器中的最终html应如下所示:

 <select id="ValueType" name="ValueType" data-val-required="Value Type is required" data-val="true"></select>
但我目前有:

<select id="ValueType" name="ValueType"></select>

是否有@Html方法从ViewModel属性获取这些数据值,或者如何实现?我必须硬编码吗?

您必须硬编码,但您提到要在选项中添加类名。您几乎无法控制浏览器/操作系统如何呈现选项,因此无法确定类名的值。目标是以某种方式将javascript事件附加到选项的子集。我的解决方案是在某些选项中添加一个类。它不是用于视觉/渲染的。SAN选项可能是向视图模型或ViewBag属性传递一个列表,其中包含类名,每个选项一个,然后使用jquery将类名添加到选项中。这至少意味着你可以使用html助手。手动添加验证属性有点脆弱-如果以后更改属性会怎么样-可能很难调试?这是个好主意。谢谢我还研究了在不同的列表中传递选项子集的可能性,隐藏每个项,并在文档上使用jquery,通过比较类来分配类
<select id="ValueType" name="ValueType"></select>