2017-12-03 22 views
0

私はasp.net MVC Core 2.0アプリケーションを開発中です。asp.net core mvcフィルタの選択リスト

私はアイテムのリストを含むページを持っています。

このページの先頭に複数のドロップダウンリストを入れたいと思います。このドロップダウンはフィルタです。ここで

は一例です。ここで

は私の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イベント)で動作するように管理しています。それは動作しますが、それは非常に醜いです。

私はあなたの場合は

おかげ

答えて

0

は、単に形式に

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

をあなたのフィルタとのparamsを追加ASP.Netコア2の機能でこれを行う方法があるかどうかを知りたいです送信ボタンがない場合は、選択のonchangeでフォームを送信してください。

関連する問題