Список MVC без ListItems

Я пытаюсь показать 2 списка, один со всеми возможными вариантами, а другой будет заполняться по мере того, как пользователи выбирают свой выбор, но по какой-то причине я не могу добавить пустой список.

Вот код:

@Html.ListBox("somename")

и моя ошибка: нет элемента ViewData типа "IEnumerable" с ключом "somename".

Если я заменю приведенную выше строку кода следующей, тогда она будет работать нормально, но мне нужен пустой список:

@Html.ListBox("somename", liMyList)

где liMyList — это SelectListItem.

возможно ли иметь пустой список в MVC? Пожалуйста помоги


person DAK    schedule 17.06.2013    source источник


Ответы (2)


Один из вариантов — это просто чистый HTML:

<select name="somename" multiple="multiple">
</select>

Другой - предоставить пустой список элементов:

@Html.ListBox("somename", new List<SelectListItem>())
person Andrei    schedule 17.06.2013
comment
классно. интересно, почему тогда @html.Listbox(name) вообще вариант? глупый майкрософт - person DAK; 17.06.2013

Я понимаю, что это старый вопрос, но я решил, что в моей модели представления будет 2 члена IEnumerable (моя модель использовала List‹>). Первый элемент был списком для выбора, а второй — получателем вариантов, с кнопками между двумя полями для управления перемещением выбранных элементов.

public class DataViewModel
{
    // some other model members
    public List<SelectListItem> SourceList { get; set; }
    public List<SelectListItem> DestinationList { get; set; }
}

В моем контроллере я просто создал новые списки для обоих участников.

DataViewModel vm = new DataviewModel() {
    SourceList = new List<SelectListItem>(),
    DestinationList= new List<SelectListItem>(),
    // Other initialization
}

Затем я заполнял список источников из любого источника, который использовал (в своем приложении я получал список пользователей из Active Directory). Вы также можете заполнить список назначения, если ваше приложение позволяет отображать текущие варианты, чтобы удалить их или просто отобразить. Но заполнение списка не является обязательным.

Затем, на мой взгляд, я просто добавил оба списка с соответствующей привязкой:

@model Application.WebApp.Models.DataViewModel
<!-- Some HTML/Razor Markup -->
<div class="form-group">
    <div class="col-sm-3">
        @Html.ListBoxFor(m => m.SourceList, Model.SourceList, new {size = 10})
    </div>
    <div class="col-sm-1">
        <input type="submit" class="btn" value="--&gt;&gt;" name="Action"/>
        <input type="submit" class="btn" value="--&gt;" name="Action"/>
        <input type="submit" class="btn" value="&lt;--" name="Action"/>
        <input type="submit" class="btn" value="&lt;&lt;--" name="Action"/>
    </div>
    <div class="col-sm-3">
        @Html.ListBoxFor(m => m.DestinationList, Model.DestinationList, new {size = 10})
    </div>
</div>
<!-- Some HTML/Razor Markup -->

Для представления вам, вероятно, придется поиграть с разметкой в ​​соответствии с вашими целями.

person Harry Cooper    schedule 04.01.2017