【发布时间】:2019-03-07 14:57:34
【问题描述】:
我试图让我的表在索引视图中按某些值过滤,为此我使用 [HttpGet] Index 方法创建 2 个 selectLists(每个过滤器类型一个)。过滤器按钮应该获取每个列表的选定值,并将它们发送到 [HttpPost] 索引方法,该方法过滤表。
问题是我过滤时它不会“重置”url,所以每次我更改过滤器时它都会不断添加到url。
Index Get(这个很好用)
[HttpGet]
public IActionResult Index()
{
IEnumerable<Lesson> Lessons = _LessonRepository.GetAll();
ViewData["Types"] = GetTypesAsSelectList();
ViewData["Difficulties"] = GetDifficultiesAsSelectList();
return View(Lessons);
}
Index Post(每次点击我视图中的过滤器按钮时,都会添加/Lesson/Index)
[HttpPost]
public IActionResult Index(string filter, string filter2)
{
IEnumerable<Les> Lessons = null;
if (filter == null && filter2 == null)
Lessons = _LessonRepository.GetAll();
else if (filter != null && filter2 == null)
{
Lessons = _LessonRepository.GetByDifficulty(filter);
}
else if (filter == null && filter2 != null)
{
Lessons = _LessonRepository.GetByType(filter2);
}
else if (filter != null && filter2 != null)
{
Lessons = _LessonRepository.GetByType(filter2).Where(l => l.Difficulty == filter);
}
ViewData["Types"] = GetTypesAsSelectList();
ViewData["Difficulties"] = GetDifficultiesAsSelectList();
return View(Lessons);
}
查看
<form action="Lesson/Index/" method="post">
<div class="form-inline">
<select id="difficulties" name="filter" asp-items="@ViewData["Difficulties"] as List<SelectListItem>" class="form-control">
<option value="">-- Select difficulty --</option>
</select>
<select id="types" name="filter2" asp-items="@(ViewData["Types"] as List<SelectListItem>)" class="form-control">
<option value="">-- Select type --</option>
</select>
<button type="submit">Filter</button>
</div>
</form>
【问题讨论】:
-
我不会这样做,我会考虑使用 javascript/jquery 来做。然后您可以清除下拉列表并使用 narkup 填充它。
标签: asp.net post model-view-controller get