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