首页 文章

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

提问于
浏览
-1

我使用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”等 . 但是“下一个”和“上一个”链接呢?再加上这样做感觉不对 .

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

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

谢谢阅读

1 回答

相关问题