Как я могу заполнить выпадающий список содержимым массива в .Чистый MVC?

#c# #asp.net #asp.net-mvc #model-view-controller #asp.net-mvc-5

Вопрос:

Это, вероятно, супер очевидно, но я невероятно новичок в MVC (и C# в целом), и я просто не могу этого понять.

У меня есть модель представления, которая содержит несколько битов данных о проекте, которые затем отображаются в таблице представления с помощью @foreach.

Я хочу настроить фильтр так, чтобы отображались только данные, принадлежащие указанному проекту. Я понял, как это сделать с помощью кнопок фильтра, используя @foreach для создания новой кнопки фильтра для каждого отдельного имени проекта, присутствующего в модели представления:

 <div class="btn-group">
    <button type="button" class="btn btn-default btn-filter" data-target="all">All</button>
    @foreach (var item in Model.Select(s => s.ProjectName).Distinct().ToArray())
    {
        {<button type="button" class="btn btn-default btn-filter" data-target="@item">@item</button>}

    }
</div>
 

Фактическая фильтрация выполняется с помощью Chosen и jQuery, с которыми я знаком, но я не могу понять, как перенести данные с кнопок создания на заполнение выпадающего меню.

Я не хочу заполнять раскрывающийся список ВСЕМИ доступными именами проектов, потому что их сотни, мне нужны только те, которые действительно существуют в ViewModel на момент загрузки страницы.

Все учебные пособия и руководства, которые я нашел в Интернете, включают создание большего количества моделей представлений и классов List<>, которых я бы предпочел по возможности избегать.

Что я упускаю?

Ответ №1:

Я все понял!

Я пытался использовать помощники HTML, но с выбранным вы можете просто сделать это в инструкции SELECT:

     <select class="chosen-select" style="width:200px;">
    <option data-target="all">All</option>
    @foreach (var item in Model.Select(s => s.ProjectName).Distinct().ToArray())
    { <option data-target="@item">@item</option>
    }
    </select>