Я пытаюсь выяснить, как работает DropDownListFor, но безуспешно.
Мой контроллер создает список SelectListItems, куда я помещаю все группы, найденные в базе данных:
viewModel.Groups = LoadGroups(viewModel.User.AssociatedGroups);
this itметод:
private IList<SelectListItem> LoadGroups(List<String> associatedGroups)
{
var groups = _SecurityService
.LoadGroups()
.Select(e => new SelectListItem
{
Selected = associatedGroups.Contains<System.String>(e.Id.ToString()),
Value = e.Id.ToString(),
Text = e.Name
}).ToList();
return (groups);
}
Как видите, я установил выбранный элемент, если в списке есть связанные группы.Я помещаю этот список в поле (Группы) моей пользовательской модели представления:
public class UsersViewModel
{
public UsersViewModel()
{
this.Groups = new List<SelectListItem>();
}
public Models.User User { get; set; }
public IList<SelectListItem> Groups { get; set; }
}
и отправляю UsersViewModel в представление.Я использую этот код для построения выпадающего списка с множественным выбором:
<%=Html.DropDownListFor(m => m.User.AssociatedGroups, (List<System.Web.Mvc.SelectListItem>)Model.Groups, new { @class = "dropDownGroups", multiple = "multiple" })%>
AssociatedGroups - это поле класса Users (который является членом моей модели представления):
public List<String> AssociatedGroups { get; set; }
Там нет ничегосвоеобразный здесь.Если я использую этот код, я не могу увидеть элементы выбранного раскрывающегося списка (и у них установлен атрибут, я дважды проверил), но я могу связать выборки с AssociatedGroups, когда я публикую форму.Если я изменяю AssociatedGroups (поле класса User) на строку:
public String AssociatedGroups { get; set; }
У меня будет противоположное поведение:
Я вижу проверенные элементы раскрывающегося списка, но когда я публикуюЕсли нет привязки, или, что лучше, связан только один элемент.Я провел большую часть своего дня, пытаясь выяснить, в чем проблема, и я пробовал разные комбинации, но ни одна из них, похоже, не работает.Кто-нибудь может мне помочь?
Спасибо.