【发布时间】:2016-06-17 12:05:10
【问题描述】:
pagedList 有问题。
我的任务是使用过滤器面板和分页列表制作视图。
我的看法:
索引: 这是主视图
@model WebUI.Areas.Admin.Models.Product.ProductSearchViewModel
<div class="row">
<div class="panel panel-default">
<div class="panel-heading text-center">
<h4 class="panel-title">
<a data-toggle="collapse" href="#filter">@Resources.Lang.Filter</a>
</h4>
</div>
<div id="filter" class="panel-collapse collapse">
<div class="panel-body">
@using (Ajax.BeginForm("ProductsList", "Product", new AjaxOptions { UpdateTargetId = "productsList" }, new { @id = "searchForm", @class = "form-horizontal" }))
{
// some items to filter
}
</div>
</div>
</div>
</div>
<div id="productsList" class="row">
// Here will be rendered partial view with pagedList
</div>
分页列表的部分视图
@using PagedList.Mvc
@model PagedList.IPagedList<WebUI.Models.Product.RegularProductDomainModel>
@foreach (var item in Model)
{
@Html.Partial("_ProductSummary", item)
}
Страница @(Model.PageCount < Model.PageNumber ? 0 : Model.PageNumber) из @Model.PageCount
@Html.PagedListPager(Model, page => Url.Action("ProductsList", page = page}),
PagedListRenderOptions.EnableUnobtrusiveAjaxReplacing(new AjaxOptions() { HttpMethod = "POST", UpdateTargetId = "productsList" }))
控制器
public ActionResult Index()
{
}
[HttpPost]
public ActionResult ProductsList(ProductSearchViewModel model, int page = 1, int pageSize = 5)
{
using (_unitOfWork = _factory.Create())
{
// prepare list of items
var products = _unitOfWork.ProductsRepository.GetProducts(model.CategoryID, model.BrandID, model.ProductStateID,null,true, model.Code)
.ToPagedList(page, pageSize);
return PartialView("_ProductsList", products);
}
}
过滤效果很好。但是,如果我想过滤值然后进行分页它不起作用,因为当我单击分页时,在控制器中我的 ProductSearchViewModel 只有默认值。据我了解,它不起作用,因为我的 PartialView 对 ProductSearchViewModel 一无所知,它在 Index.chtml 中使用。当我进行分页时,有什么方法可以将我的 ProductSearchViewModel 传递给控制器?
【问题讨论】:
标签: c# asp.net-mvc asp.net-mvc-4