【问题标题】:Bind multiple values on EnumDropDownListFor / ListBoxFor在 EnumDropDownListFor / ListBoxFor 上绑定多个值
【发布时间】:2019-05-07 21:32:34
【问题描述】:

我正在使用 ASP.NET MVC5,我正在尝试创建一个 EnumDropDownListFor where :

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

这是我迄今为止尝试过的:

@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&lt;int&gt; SelectedHeatingTypes 更改为int[],没有成功

如何在模型属性上绑定多选?我对 Arrays、Lists、IEnumerable 以及我可以在服务器端使用的所有内容都持开放态度......

【问题讨论】:

  • 这里有一些答案stackoverflow.com/questions/21878673/…。也许可以帮助你。
  • 这个链接解释了如何在 EnumDropDownListFor 中选择一个元素。这有效但不能回答我的问题,即:如何在下拉列表中选择多个元素,并将其与我的模型属性绑定
  • 如果把这段代码sn -p @multiple = "multiple"改成multiple = "true"
  • 我已经尝试过了(请参阅我的原始帖子中的示例),不幸的是它不起作用

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


【解决方案1】:

我会查看 KnockoutJs,因为这可能会解决您的问题。不过,这是一个客户端绑定,因此您需要将模型发送到客户端,然后使用 KO 将数据绑定到您的 UI。

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

【讨论】:

  • 您好,感谢您的回答。我在以前的项目中与 KO 合作过,它应该可以工作,但是这是一个个人项目,我不想为一个屏幕中的一个绑定添加一个 JS 框架。
  • 我明白了,但你所拥有的是服务器端绑定。一旦它离开服务器,如果没有一些 JS,你将无法做任何事情。因此,要么您需要 JS 为您的客户端执行此操作,要么您将需要使用诸如 KO 之类的框架。 C# 中没有任何 OOTB 可以自动生成客户端 JS 来为您完成这项工作。
猜你喜欢
  • 2012-05-14
  • 2018-10-14
  • 2019-11-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-19
  • 2012-09-02
  • 1970-01-01
相关资源
最近更新 更多