(извините, здесь есть несколько пунктов, но ни один из них, кажется, не позволяет мне заставить это работать.)
Я хочу создать DropDownList, который позволяет множественный выбор. Я могу заполнить список, но я не могу заставить выбранные в данный момент значения работать.
В контроллере у меня следующее:
ViewBag.PropertyGroups = from g in db.eFinGroups
where g.GroupType.Contents == "P"
select new
{
Key = g.Key,
Value = g.Description,
Selected = true
};
ViewBag.SelectedPropertyGroups = from g in company.Entities
.First().Properties.First().PropertyGroups
select new {
g.eFinGroup.Key,
Value = g.eFinGroup.Description };
В представлении у меня:
@Html.DropDownListFor(model => model.PropertyGroupsX,
new MultiSelectList(ViewBag.PropertyGroups
, "Key", "Value"
, ViewBag.SelectedPropertyGroups),
new { @class = "chzn-select", data_placeholder = "Choose a Property Group", multiple = "multiple", style = "width:350px;" })
PropertyGroupX - строка[] в модели.
Я пробовал все типы итераций с выбранными свойствами... передавая только значение, только ключ, оба и т.д.
Также, какой тип PropertyGroupX должен быть? Является ли строковый массив правильным? Или это должен быть словарь, содержащий текущие группы свойств? Мне очень трудно найти документацию по этому вопросу.
Кто-то посоветовал мне использовать ListBoxFor. Я перешел на это и все еще имею ту же проблему. Выбранные значения не устанавливаются как выбранные при отображении тегов опций. Вот что я пробовал:
@Html.ListBoxFor(model => model.PropertyGroups, new MultiSelectList(ViewBag.PropertyGroups, "Key", "Value"))
Я пробовал использовать model.PropertyGroups как коллекцию строк, соответствующих значениям, как коллекцию Guid, соответствующих идентификаторам, и как анонимный тип с ключом и значением, чтобы соответствовать элементам в ViewBag. Кажется, ничего не работает.