Partial View
、DropDownList
があります。そして私はMain View
を持っています。menu
で、私はこれをPartial View
と呼ぶことができます。私はfiltering
をPartial View
にして、パラメータを付けようとしています。これを行うには、(ddl)を@Ajax.ActionLink
にする必要があります。 js
で処理しようとしていますが、Partial View
と呼ぶことなくページをリロードするだけです。メインビューからDropDownListの値を@Ajax.ActionLinkに設定します
ActionLinkの:
@Ajax.ActionLink(
"Parts",
"PartsPartial",
new
{
categorie = "add"
},
new AjaxOptions
{
HttpMethod = "GET",
InsertionMode = InsertionMode.Replace,
UpdateTargetId = "content"
}, new { @class = "button" }
)
フォームメソッドがフィルタリングを行うために部分図で取得:
<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" name="add" value="Filter" />
</div>
</form>
そして、私のコントローラ:
public ActionResult PartsPartial(string categorie, int? brand)
{
string str = "add";
List<bs_categories> categoriesList = _db.bs_categories.ToList();
List<bs_brands> brandsList = _db.bs_brands.ToList();
if (categorie == str)
{
IQueryable<bs_parts> prts = _db.bs_parts;
PartsViewModel pViewModel = new PartsViewModel
{
Parts = prts.ToList(),
Categories = new SelectList(categoriesList, "categories_id", "categories_name"),
Brands = new SelectList(brandsList, "brands_id", "brands_name")
};
return PartialView(pViewModel);
}
decimal categoryId = Convert.ToDecimal(categorie);
var parts = _db.bs_parts.Where(x => x.parts_category_id == categoryId).OrderBy(x => x.parts_id);
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);
}
そしてここでは、作成するJSです交換:
<script>
$(function() {
$('#add').click(function() {
var type = $('#categorie').val();
$.ajax({
url: this.href,
type: 'GET',
data: { type: type },
cache: false,
success: function (result) {
$('#content').prepend(result);
}
});
return false;
});
});
</script>
私は何かを逃したことがありますか?
と呼ばれることはありませんを作る際に、いくつかのデータ属性としてURLを使用して簡単なアンカーを使用し、
をあなたは既にajaxを通して明示的にビューをロードするコードを持っているので! –