ASP.NETMVC。按多个参数过滤 PagedList
ASP.NET MVC. PagedList filtering by multiple params
我有一个带有过滤器参数的网页,并创建了简单的 class 以通过 Where() 方法处理该参数。
但是 Html.Action 传递参数有一个问题。
搜索选项:
public class Document
{
public string Name { get; set; }
public string Title { get; set; }
public string Param1{ get; set; }
public string Param2{ get; set; }
}
控制器动作
public ActionResult Index(int? page, Document filter)
{
ViewBag.Params= documentFilter;
IEnumerable<Document> DocumentList = dbContext.Documents.ToList();
DocumentList = DocumentList.CustomFilter(documentFilter);
var pageNumber = page ?? 1;
var onePageOfProducts = DocumentList.ToPagedList(pageNumber, 50);
ViewBag.Documents = onePageOfProducts;
return View();
}
过滤效果很好,但是如果使用分页控件,params会丢失。
分页助手:
@Html.PagedListPager((IPagedList)ViewBag.Documents,
page => Url.Action("Index", new { page , filter = (Document)ViewBag.filter}))
//Also tried Model instead of ViewBag.filter
我无法将参数传递给动作控制。
有什么办法吗?
您需要使用 ajax 调用而不是帮助程序。编写 ajax 调用和传递参数作为 post 方法。
似乎 ViewBag.filter 从未设置,因此您的分页将无法使用。
这里有一个很棒的教程,可以详细回答您的问题:
http://www.asp.net/mvc/overview/getting-started/getting-started-with-ef-using-mvc/sorting-filtering-and-paging-with-the-entity-framework-in-an-asp-net-mvc-application
我有一个带有过滤器参数的网页,并创建了简单的 class 以通过 Where() 方法处理该参数。
但是 Html.Action 传递参数有一个问题。
搜索选项:
public class Document
{
public string Name { get; set; }
public string Title { get; set; }
public string Param1{ get; set; }
public string Param2{ get; set; }
}
控制器动作
public ActionResult Index(int? page, Document filter)
{
ViewBag.Params= documentFilter;
IEnumerable<Document> DocumentList = dbContext.Documents.ToList();
DocumentList = DocumentList.CustomFilter(documentFilter);
var pageNumber = page ?? 1;
var onePageOfProducts = DocumentList.ToPagedList(pageNumber, 50);
ViewBag.Documents = onePageOfProducts;
return View();
}
过滤效果很好,但是如果使用分页控件,params会丢失。
分页助手:
@Html.PagedListPager((IPagedList)ViewBag.Documents,
page => Url.Action("Index", new { page , filter = (Document)ViewBag.filter}))
//Also tried Model instead of ViewBag.filter
我无法将参数传递给动作控制。
有什么办法吗?
您需要使用 ajax 调用而不是帮助程序。编写 ajax 调用和传递参数作为 post 方法。
似乎 ViewBag.filter 从未设置,因此您的分页将无法使用。
这里有一个很棒的教程,可以详细回答您的问题: http://www.asp.net/mvc/overview/getting-started/getting-started-with-ef-using-mvc/sorting-filtering-and-paging-with-the-entity-framework-in-an-asp-net-mvc-application