如何在Html.DropdownListFor helper中使用data- *属性?

时间:2019-04-23 07:43:32

标签: c# .net asp.net-core

我正在尝试创建一个下拉列表(使用 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 ,因此它将使用所需的属性值为每个选项添加数据子文本?如果可能的话,我希望同时具有自动创建的验证标签和数据属性。

0 个答案:

没有答案