#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>