如何使用 MVC 在选项上创建带有自定义数据属性的 DropDownList 并保留验证?
How can I use I create a DropDownList with custom data attributes on the options, using MVC, and retain the validation?
使用不显眼的验证,如果我只是做 @Html.DropDownListFor
(或任何其他 xxxFor),那么 MVC 会从我的模型中弹出适当的客户端验证属性。
但是我需要一个解决方案,其中每个选项都添加了特定的数据自定义属性。所以要做到这一点,我使用 foreach
并手动渲染 HTML.
虽然这样做,但我失去了验证。我不确定是否可以自己添加它,而不对其进行硬编码,这样它仍然基于模型上的数据注释。
最终,我想要一个下拉列表绑定到我的 ViewBag.ListOfItems
使用 key/value 作为 value/text 和一个 data-custom-attribute
包含从 ListOfItems 中获取的另一个值,无论模型验证是在模型上进行的(在本例中,[Required]
,但我将重新使用此代码,并且可能还有其他属性)。
这可能吗?
保留 foreach
,但使用 SelectTagHelper
:
<select asp-for="Foo">
@foreach (var option in Model.FooOptions)
{
<option value="@option.Value" data-whatever="blah">@option.Text</option>
}
</select>
使用不显眼的验证,如果我只是做 @Html.DropDownListFor
(或任何其他 xxxFor),那么 MVC 会从我的模型中弹出适当的客户端验证属性。
但是我需要一个解决方案,其中每个选项都添加了特定的数据自定义属性。所以要做到这一点,我使用 foreach
并手动渲染 HTML.
虽然这样做,但我失去了验证。我不确定是否可以自己添加它,而不对其进行硬编码,这样它仍然基于模型上的数据注释。
最终,我想要一个下拉列表绑定到我的 ViewBag.ListOfItems
使用 key/value 作为 value/text 和一个 data-custom-attribute
包含从 ListOfItems 中获取的另一个值,无论模型验证是在模型上进行的(在本例中,[Required]
,但我将重新使用此代码,并且可能还有其他属性)。
这可能吗?
保留 foreach
,但使用 SelectTagHelper
:
<select asp-for="Foo">
@foreach (var option in Model.FooOptions)
{
<option value="@option.Value" data-whatever="blah">@option.Text</option>
}
</select>