asp.net-mvc - 创建、编辑、详细信息或删除后返回 MVC 5 pagedlist(包括过滤器)的同一页面

标签 asp.net-mvc filter pagedlist

使用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/

相关文章:

c# - 将 ExecuteReader 转换为 XML HTTP 响应

.net - AutoMapper 配置文件和单元测试

c# - 使用 jquery 渲染局部 View

c# - 使用属性路由为 Web Api 在 View 中构造 url

ruby-on-rails - Rails - 主动管理对索引页进行分页

JavaScript Array.filter 没有按预期工作

elasticsearch - Elasticsearch-Kibana-分组依据和计数

css - MVC PagedList 的自定义 CSS

c# - 无法进入或中断在 Linq 查询/表达式中调用的方法

c# - 在 Asp.net MVC 和 Entity Framework 中分页时如何应用过滤器?