У меня есть IEnumerable<int>
с массивом лет в моих ViewData, и мне нужно отобразить его с предварительно выбранным текущим годом и возможностью выбрать более одного.Хорошо, что может быть проще?
<select name="Years" multiple>
@foreach(int year in ViewData["Years"] as IEnumerable<int>)
{
<option value="@year" @if(year == DateTime.Now.Year){<text>selected="selected"</text>}>@year</option>
}
</select>
И все работает как положено.
Но мы не n00bs , мы знаем о предопределенных помощниках.
@Html.DropDownList("Years", (ViewData["Years"] as IEnumerable<int>).ToSelectListItems(DateTime.Now.Year/*it's our custom method, don't ask why*/), DateTime.Now.Year, new {multiple = "multiple"})
и
@Html.DropDownList("Years", new SelectList(ViewData["Years"] as IEnumerable<int>, null, null, DateTime.Now.Year), new { @class = "selectpicker", multiple = "multiple" })
отображает правильный список, но элементы не выбраны (и да, я проверяю выходные данные HTML и промежуточные коллекции - выбранный набор значений, а в HTML я вижуничего).
@Html.DropDownList("Years", "Noting selected", new SelectList(ViewData["Years"] as IEnumerable<int>, DateTime.Now.Year), new {multiple = "multiple"})
терпит неудачу с «« HtmlHelper »не содержит определения для« SelectListBox », и не найден доступный метод расширения« SelectListBox », принимающий первый аргумент типа« HtmlHelper »(вам не хватает директивы using или ссылки на сборку? »
@Html.ListBox("Years", new MultSelectList(ViewData["Years"] as IEnumerable<int>, new int[]{DateTime.Now.Year}))
и
@Html.ListBox("Years", new MultSelectList(ViewData["Years"] as IEnumerable<int>, new int[] {DateTime.Now.Year}, new int[]{}))
и даже
@Html.ListBox("Years", new MultSelectList(ViewData["Years"] as IEnumerable<int>))
снова рисует список,но теперь выбраны ВСЕ значения.
Поэтому у меня есть только один вопрос: ПОЧЕМУ ?
INB4: DropDownListFor
/ ListBoxFor
, передача данных в моделях и т. д. неприемлемое решение, поэтому, пожалуйста, не тратьте впустую байты, чтобы написать их здесь. ViewData передает коллекцию правильно, проблемы у помощников (или мое понимание их).