Как заполнить ListBoxFor в Mvc3?
У меня есть список хранимых процедур типа, которые имеют идентификатор и имя в качестве данных в нем. у меня есть свойство типа int в model и список той же хранимой процедуры. теперь я хочу связать эту информацию в ListBoxFor
ввиду того, что я написал это
@Html.ListBoxFor(x => x.HobbyId, new MultiSelectList(Model.listHobby, "pkHobbyId", "Hobby"))
но я получаю ошибку
параметр 'expression' должен вычисляться как IEnumerable, если допускается множественный выбор.
пожалуйста, помогите, как связывать.
3 ответов
попробуй
@Html.ListBoxFor(x => x.HobbyId, Model.listHobby.Select(f => new SelectListItem { Text = f.Hobby, Value = f.pkHobbyId.ToString() }), new { Multiple = "multiple" })
listHobby-это список iEnumerable в моем примере
извините, если я ввел вас в заблуждение, бросился отвечать, но вы не можете получить результат multiselect listbox в переменную guid или int (независимо от типа вашего HoobyId), у вас должен быть массив, чтобы захватить результат, как
public string[] SelectedHobbyIds { get; set; }
таким образом, должно быть что-то не так с вашими моделями просмотра, поэтому лучше, чтобы u разместил ваши модели просмотра для проверки
@ Chhatrapati Sharma,
в вашем контроллере, попробуйте это,
ViewData['anyName'] = new SelectList {
Text = , // text from ur function
Value = , // Value from function
Selected = // if required
}
и в виду, свяжите viewdata как,
<@Html.ListBox("docImages", ((IEnumerable<SelectListItem>)ViewData["anyName"]))
для тестирования попробуйте пример элемента selectlist следующим образом,
ViewData['anyName'] = new List<SelectListItem>{
new SelectListItem {Text = "First", Value = "0"},
new SelectListItem {Text = "Second"), Value = "1"},
new SelectListItem {Text = "Third", Value = "2"}
};
Если этот образец работает, то проверьте свою функцию " _supp.listDocImages () " и убедитесь, что он возвращает IList
@Html.ListBoxFor(x => x.HobbyId, Model.listHobby.Select(f => new SelectListItem { Text = f.Hobby, Value = f.pkHobbyId.ToString() }), new { Multiple = "multiple" })
HobbyId в выражении должен быть ienumerable, потому что вы установили multi select