我正在开发一个asp.net MVC Core 2.0应用程序。
我有一个包含项目列表的页面。
我想在本页顶部放置几个下拉列表。这个下拉列表是过滤器。
以下是一个例子:
这是我的cshtml视图:
@model List<Person>
Genre : <select asp-items="ViewBag.genres"></select>
<table border="1">
@foreach (var item in Model)
{
<tr>
<td>@item.name</td>
<td>@item.genre</td>
...
</tr>
}
以下是相关的控制器操作方法:
public async Task<IActionResult> Index(String selected_genre)
{
ViewBag.genres = new SelectList(new []
{
new { id = "", name = "All" },
new { id = "1", name = "Male" },
new { id = "2", name = "Female" },
new { id = "3", name = "Don't know" },
},
"id", "name", selected_genre);
...
我想要做的是在用户选择类型下拉列表中的内容时重新加载页面。
如果用户选择“女性”,我希望重新加载页面:
http://myapplication/MyController/Index?selected_genre=2¶m2=3
请注意可能还有其他过滤器(这就是为什么我在我的例子中放了param2 = 3)。
我已设法使其与javascript(onchange事件)一起使用。它有效,但非常难看。
我想知道是否有办法使用ASP.Net核心2功能
由于
答案 0 :(得分:2)
只需将过滤器和参数添加到表单
即可<form method="get" action="~/">
<select name="selected_genre" asp-items="ViewBag.genres"></select>
...
</form>
如果您没有提交按钮,则可以使用选择的onchange
提交表单。