Список с выбранным значением - PullRequest
0 голосов
/ 21 декабря 2018

У меня есть 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 передает коллекцию правильно, проблемы у помощников (или мое понимание их).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...