Asp.net core mvc 用于筛选器的asp.net核心mvc选择列表

Asp.net core mvc 用于筛选器的asp.net核心mvc选择列表,asp.net-core-mvc,asp.net-core-2.0,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) {

我正在开发一个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>
}
@型号列表
体裁:
@foreach(模型中的var项目)
{
@item.name
@项目类型
...
}
以下是关联的控制器操作方法:

        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);
            ...
公共异步任务索引(选定字符串类型)
{
ViewBag.genres=新建选择列表(新建[]
{
新的{id=”“,name=“All”},
新的{id=“1”,name=“Male”},
新的{id=“2”,name=“Female”},
新的{id=“3”,name=“不知道”},
}, 
“身份证”、“姓名”、选定类型);
...
我想做的是当用户在类型下拉列表中选择某个内容时重新加载页面

如果用户选择“女性”,我希望重新加载页面:

请注意,可能还有其他过滤器(这就是为什么我在示例中使用param2=3)

我已经设法使它与javascript(onchange事件)一起工作。它可以工作,但非常难看

我想知道是否有一种方法可以通过ASP.NETCore2功能实现这一点


谢谢

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

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

...

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

,只需将过滤器和参数添加到表单中即可

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

...
如果没有“提交”按钮,则可以使用select的
onchange
来提交表单