2017-06-04 14 views
1

私はPartialViewを持っています。これはテーブルに項目を表示します。私はいくつかの基準でそれらをフィルタリングしたいと思います。マイビュー:PartialViewでのフィルタリング

@model Bike_Store.Models.PartsViewModel 

<form method="get"> 
    <div> 
     <label>Category: </label> 
     @Html.DropDownList("categorie", Model.Categories as SelectList, 
     htmlAttributes: new { @class="form-control"}) 

     <label>Brand: </label> 
     @Html.DropDownList("brand", Model.Brands as SelectList, 
     htmlAttributes: new { @class="form-control" }) 
     <input type="submit" value="Filter" />   
    </div> 
</form> 

<table>...</table> 

マイコントローラ:フィルタリングの

[HttpGet] 
    public ActionResult PartsPartial(int? categorie, int? brand) 
    { 
     IQueryable<bs_parts> parts = _db.bs_parts.Include(p => p.bs_categories); 
     if (categorie != null && categorie != 0) 
     { 
      parts = parts.Where(p => p.parts_category_id == categorie); 
     } 
     if (brand != null && brand != 0) 
     { 
      parts = parts.Where(p => p.parts_brand_id == brand); 
     } 

     List<bs_categories> categoriesList = _db.bs_categories.ToList(); 
     List<bs_brands> brandsList = _db.bs_brands.ToList(); 

     PartsViewModel pvm = new PartsViewModel 
     { 
      Parts = parts.ToList(), 
      Categories = new SelectList(categoriesList, "categories_id", "categories_name"), 
      Brands = new SelectList(brandsList, "brands_id", "brands_name") 
     }; 
     return PartialView(pvm); 
    } 

この方法では、通常のViewで正常に動作します。しかし、私がPartial Viewと同じことをしようとすると、それは動作しません、ページはちょうどリロードします。 Filterボタンを押したときにGetメソッドが機能するかどうかを調べるには、break pointを入れてみてください。何が問題ですか?

私はメニューからPartial Viewを呼び出しています:

@Ajax.ActionLink(
"Parts", 
"PartsPartial", 
new 
{ 
    value1 = 1 
}, 
new AjaxOptions 
{ 
    HttpMethod = "GET", 
    InsertionMode = InsertionMode.Replace, 
    UpdateTargetId = "content" 
}, new { @class = "button" } 
) 
<div class="content" id="content"> 

</div> 
+0

を@ Html.Partial()または@Html.RenderPartialは何の問題もありませんあなたのモデルでhtmlビューをほとんどレンダリングしません。 代わりにHtml.RenderActionを使用することを検討してください – Igor

答えて

2

@ Html.Partial()または@ Html.RenderPartial任意のコントローラの呼び出しを行うと、ちょうどあなたのモデルでHTMLをレンダリングしません。 すでに同様の質問への回答数があるように見えます:

ではなく

UPDATE Html.RenderActionを使用することを検討して

Html.Partial vs Html.RenderPartial & Html.Action vs Html.RenderAction

Html.Partial vs Html.RenderPartial & Html.Action vs Html.RenderAction. can any one please describe the difference

Controller for partial view in layout page MVC

+0

私は '@ Ajax.ActionLink'で' Partial View'を呼び出すサイドメニューを持っています。どのように私の問題を解決するには?あなたは私の投稿で編集を見ることができます –

+1

ルーティングパラメータがvalue1 = 1で、categorie = 1ではありませんか? – Igor

+0

今私はそれを見る。このroutパラメータを選択したddlのアイテムの 'id'と同じにする方法はありますか?だから、私が 'categorie'を選択して' Filter'ボタンを押すと、 'Partial View'をフィルタリングしたものが表示されますか? –

関連する問題