如何使用 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>