Как заполнить 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