使用VS2013,MVC 5和pagedlist 1.17.0.0,在索引页上,我可以分页数据,添加过滤器,然后继续分页数据,没有问题。当我执行创建、编辑、详细信息或删除操作时,它总是会删除我的过滤器,并将我带回第一页的第一条记录。如何保留我当前的过滤器以及我在分页列表中的位置?
例如,在按日期排序的费用列表中,我设置了年份 = 2003 年的过滤器。我位于 2003 年费用列表的第 4 页上。我查看了一条记录的详细信息,当我返回列表时,我又回到了 2014 年支出的第一页(按日期降序排序) - 我丢失了筛选器和我所在的页面( 2003 年第 4 页)。
抱歉,这是新的。谢谢
最佳答案
我目前正在寻找一种针对复杂过滤器的完全通用的方法,但这是我用于简单过滤器的方法(看起来就像您现在正在做的那样)。
将该值添加到详细信息记录的 ViewBag 中,然后将其传递回索引(您可能也希望对页面值执行此操作)。
所以你的索引操作方法可能已经看起来像这样:
public ActionResult Index(int? page, string filter)
{
ViewBag.Page = page;
ViewBag.Filter = filter;
var list = // App specific magic using the filter paramter to get your list of items
return View(list.ToPagedList(page ?? 1, 25);
}
在您的索引 View 中,您可能有类似这样的内容来链接到您的详细信息:
@Html.ActionLink("Details", Details", new {id = item.Id})
如果将其更改为:
@Html.ActionLink("Details", Details", new {id = item.Id, page=ViewBag.Page, filter=ViewBag.Filter})
然后是您的详细信息操作方法
public ActionResult Details(int id = 0, int? page=null, string filter=null)
{
MyDetails details = // App specific magic to get a ViewModel for your details page
ViewBag.Page = page;
ViewBag.Filter = filter;
return View(details);
}
最后,在详细信息页面上任何有返回列表的链接的地方,添加两个附加参数
@Html.ActionLink("Back to List", "Index", new { page = ViewBag.Page, filter = ViewBag.Filter })
现在,您应该在浏览详细信息页面时保持状态。
关于asp.net-mvc - 创建、编辑、详细信息或删除后返回 MVC 5 pagedlist(包括过滤器)的同一页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22263926/