Привязать несколько значений в EnumDropDownListFor / ListBoxFor - PullRequest
0 голосов
/ 07 мая 2019

Я использую 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 голосов
/ 07 мая 2019

Я бы проверил KnockoutJs, так как это может решить вашу проблему. Однако это привязка на стороне клиента, поэтому вам нужно передать свою модель клиенту, а затем использовать KO для привязки данных к вашему пользовательскому интерфейсу.

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

...