我正在尝试创建一个下拉列表(使用 bootstrap-select ),并在每个选项上使用不同的 data-subtext 属性。关键是,当我使用标签助手时,它会自动创建验证标签(很棒),但是禁止我在选择列表选项上使用任何 data-* 属性。
使用这样的循环创建选项会禁用客户端验证:
<select name="@Html.NameFor(model => Model.SelectedRoles)" id="@Html.IdFor(model => Model.SelectedRoles)" class="form-control selectpicker" data-live-search="true" autocomplete="off" data-size="8" multiple>
@foreach (var role in Model.RolesSelectListItems)
{
<option data-subtext="@role.Description" value="@role.Id">@role.Code</option>
}
</select>
创建这样的列表将不允许使用数据属性:
@Html.DropDownListFor(x => Model.SelectedRoles, new SelectList(Model.RolesSelectListItems, nameof(RoleViewModel.Id), nameof(RoleViewModel.Code)),
new { @class = "form-control selectpicker", @data_live_search = "true", @autocomplete = "off", @data_size = "8", @multiple = "" })
我的视图模型是这样的:
public IEnumerable<RoleViewModel> RolesSelectListItems { get; set; }
[Display(Name = "Requested roles")]
[Required(ErrorMessage = "Select at least one role")]
public IEnumerable<int> SelectedRoles { get; set; }
是否可能以某种方式扩展 Html.DropDownListFor ,因此它将使用所需的属性值为每个选项添加数据子文本?如果可能的话,我希望同时具有自动创建的验证标签和数据属性。