asp.net core mvc SelectList for filter

时间:2017-12-03 19:26:55

标签: asp.net-core-mvc asp.net-core-2.0

我正在开发一个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&param2=3

请注意可能还有其他过滤器(这就是为什么我在我的例子中放了param2 = 3)。

我已设法使其与javascript(onchange事件)一起使用。它有效,但非常难看。

我想知道是否有办法使用ASP.Net核心2功能

由于

1 个答案:

答案 0 :(得分:2)

只需将过滤器和参数添加到表单

即可
<form method="get" action="~/">
    <select name="selected_genre" asp-items="ViewBag.genres"></select>
    ...
</form>

如果您没有提交按钮,则可以使用选择的onchange提交表单。