【问题标题】:asp.net core mvc SelectList for filter用于过滤器的 asp.net core mvc SelectList
【发布时间】:2017-12-04 05:15:15
【问题描述】:

我正在开发一个 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 core 2 功能来做到这一点

谢谢

【问题讨论】:

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


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-01-25
      • 1970-01-01
      • 1970-01-01
      • 2022-11-28
      • 1970-01-01
      • 2018-02-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多