输入的可选数据属性 [Html]

Optional Data Attributes on Input [Html]

有没有办法在 input/select 上添加可选数据属性,即 data_val_requiredrequired

@Html.DropDownListFor(x => x.PositionId, Model.Positions, new
{
    CurrentInput.Required ? data_val_required = "Please select a position" : noAttribute
})

我目前的情况是下拉列表在一个 for 循环中,其中有一个必需的 属性。所以一些输入需要一个值,而另一些则不需要。我能想到的唯一方法是将 Html.DropDownListFor 包装在一个 if 语句中,检查是否需要输入并输出正确的 html 但那是代码重复。

我创建了对象的扩展以将这些属性添加到 htmlAttributes 对象。的扩展接受 Item 的列表,这是一个自定义 class,具有 NameKey 属性。然后我用它来添加我需要的属性 Inputs.

public static IDictionary<string, object> AddProperties(this object obj, List<Item> properties)
{
    var dictionary = obj.ToDictionary();
    properties.ForEach(x => dictionary.Add(x.Name, x.Vale));
    return dictionary;
}