Я пытаюсь использовать помощник по меткам выбора, чтобы отфильтровать список ходов по сложности и типу. Пока у меня есть рабочий раскрывающийся список, но я не знаю, как перенаправить выбранное значение в метод индекса в моем контроллере.
Это то, что у меня есть
Просмотр
@model IEnumerable<Taijitan.Models.Domain.Move>
@{
ViewData["Title"] = "Moves";
}
<h2>@ViewData["Title"]</h2>
<div class="form-group">
//Returns filter1
<select asp-items="@ViewData["Difficulty"] as List<SelectListItem>" class="form-control">
<option value="">-- Select Difficulty --</option>
</select>
//Returns filter2
<select asp-items="@ViewData["Type"] as List<SelectListItem>" class="form-control">
<option value="">-- Select Type --</option>
</select>
</div>
Предполагается, что выпадающий список возвращает выбранное значение методу index, который принимает строку в качестве фильтра.
Контроллер
public IActionResult Index(string filter, string filter2)
{
IEnumerable<Move> Moves = null;
if (filter == null && filter2 == null){
Moves = _MoveRepository.GetAll();
}
else if (filter != null && filter2 == null)
{
Moves = _MoveRepository.GetByDifficulty(int.Parse(filter));
}
else if (filter == null && filter2 != null))
{
Moves = _MoveRepository.GetByType(filter);
}
else if (filter != null && filter2 != null))
{
Moves = _MoveRepository.GetByType(filter).Where(m => m.Difficulty == int.Parse(filter2);
}
ViewData["Type"] = GetTypesAsSelectList();
ViewData["Difficulty"] = GetDifficultiesAsSelectList();
return View(Moves);
}
Метод, который создает отображаемый список выбора (почти то же самое для DifficultyList)
private List<SelectListItem> GetTypesAsSelectList()
{
List<SelectListItem> TypesList = new List<SelectListItem>();
foreach (Move move in _MoveRepository.GetAll().Distinct())
{
TypesList.Add(new SelectListItem { Text = Move.Type, Value = Move.Type });
}
return TypesList;
Я застрял в том, чтобы выяснить, как передать выбранное значение из раскрывающихся списков в качестве фильтра и фильтра2 в индекс.
EDIT
Я добавил элемент формы и эту кнопку:
<a asp-controller="Move" asp-action="Index" asp-route-filter="" asp-route-filter2="" class="btn btn-default">Filter</a>
Я не могу понять, как получить значение первого списка в asp-route-filter и значение второго списка в asp-route-filter2.