Ajax仅在具有PagedList.MVC或类似功能的ASP.NET MVC中进行分页

时间:2012-06-20 11:00:26

标签: jquery ajax asp.net-mvc pagination

我使用troygoode的PagedList在我的ASP.NET MVC应用程序中输出分页链接http://nuget.org/packages/PagedList.Mvc

我在控制器中创建了分页列表,然后将其传递给视图,该视图使用@ Html.PagedlistPager为分页链接生成html。这会生成一堆链接,例如/ Store?search = bla& page = 1,/ Store?search = bla& page = 2等。

我们非常同意javascript代码应尽可能与html分开,因此我在单独的javascript文件中为所有分页链接添加了点击处理程序。在这些点击处理程序中,我执行ajax请求以获取页面X,该页面呈现为服务器端,然后转储到客户端页面上的div中 - 包括新的分页链接。

由于我为每个请求生成新的分页链接,因此每次完成新搜索或更改页面时,都会添加这些点击处理程序。我是从ajax的OnSuccess事件处理程序执行此操作的。

这很有效。即使用户已禁用javascript,用户也可以浏览页面,因为它会回退到常规href。优雅的退化是最好的。

但是,我的应用程序有一个不同的部分,用户在记录作业时需要选择一个商店,而且它只是严格的ajax。在这种情况下,我希望分页链接的href为'javascript:void(0);'。问题是,当为这些链接添加点击处理程序时,我现在无法知道ajax调用应该发布到哪个URL。

我想我可以使用链接的文本值 - “1”,“2”,“3”等。但是“Next”和“Previous”链接怎么样?另外,这样做感觉不对。

理想情况下,PagedList.MVC可以选择在每个页面链接中放置data-page =“X”属性,然后我可以在我的点击处理程序中使用它,但事实上这样的选项不存在于这种流行的.net扩展让我相信我提出的解决方案不是理想的或首选的解决方案。

我的方法合乎逻辑吗?或者有更好的方法来做到这一点。我是否需要编写自己的帮助程序来代替PageList.MVC的标准帮助程序?我只需要一个以前做过这个的人的指导,并对他们的方法充满信心。

感谢您阅读

1 个答案:

答案 0 :(得分:0)

看一下我刚推进的对不引人注目的AJAX的支持:

https://github.com/TroyGoode/PagedList/issues/26#issuecomment-6471793