在EnumDropDownListFor / ListBoxFor上绑定多个值

时间:2019-05-07 13:17:34

标签: c# asp.net-mvc data-binding asp.net-mvc-5 bind

我正在使用ASP.NET MVC5,并且尝试创建一个EnumDropDownListFor,其中:

  • 用户可以选择多个值(在带有枚举值的下拉列表中)
  • 提交表单时,所选值将绑定到模型。

这是我到目前为止尝试过的:

@Html.ListBoxFor(m => m.SelectedHeatingTypes, new SelectList(Model.HeatingTypeItems, "Value", "Text"))
@Html.ListBoxFor(m => m.SelectedHeatingTypes, Model.HeatingTypeItems, new { @class = "form-control" })
@Html.ListBoxFor(m => m.SelectedHeatingTypes, new MultiSelectList(Model.HeatingTypeItems, "Value", "Text"))
@Html.EnumDropDownListFor(m => m.HeatingTypes, new { @class = "form-control selectpicker", @multiple = "multiple"})
@Html.ListBoxFor(m => m.HeatingTypes, Model.HeatingTypeItems, htmlAttributes: new { @class = "form-control", multiple = "multiple" })
@Html.ListBoxFor(m => m.HeatingTypes, new SelectList(Enum.GetValues(typeof(HeatingType))), new { @id = "ddlMyEnum", @multiple = "multiple" })

在我的模型上,我有两个属性

public IEnumerable<int> SelectedHeatingTypes { get; set; }
public IEnumerable<SelectListItem> HeatingTypeItems { get; set; }

我试图将IEnumerable<int> SelectedHeatingTypes更改为int[],但没有成功

如何将多重选择绑定到模型属性上?我对数组,列表,IEnumerable <>持开放态度,我可以在服务器端使用的所有功能……

1 个答案:

答案 0 :(得分:0)

我会检查KnockoutJs,因为这可能会解决您的问题。但是,那是客户端绑定,因此您需要将模型获取到客户端,然后使用KO将数据绑定到UI。

https://knockoutjs.com/documentation/selectedOptions-binding.html