搜索&在MVC4中使用AJAX分页进行排序

时间:2016-09-07 13:24:03

标签: ajax asp.net-mvc asp.net-mvc-4

我正在使用搜索,分页和排序开发MVC4应用程序。普通视图下一切正常。 现在我正在使用Ajax& amp转换相同的应用程序。局部视图。 我怎样才能通过我的搜索和通过驻留在部分View上的Paging控件对参数进行排序。现在,我能够在部分视图中加载过滤后的数据,但移动到下一页,丢失了我的搜索参数并加载了忽略搜索过滤器的所有记录。

_PartialView.cshtml中的我的分页控件

@Html.PagedListPager(Model,
                        page => Url.Action("AjaxMethod", 
                            new 
                            {  
                                page,
                                searchByUserName = Request.QueryString["searchByUserName"],
                                searchByReaderName = Request.QueryString["searchByReaderName"],
                                searchByReaderType = Request.QueryString["searchByReaderType"],
                                searchByUploadDate = Request.QueryString["searchByUploadDate"],
                                sortBy = Request.QueryString["sortBy"]
                            }), 
                        //new PagedListRenderOptions.() { Display = PagedListDisplayMode.IfNeeded, DisplayPageCountAndCurrentLocation = true }
                        PagedListRenderOptions.EnableUnobtrusiveAjaxReplacing( new AjaxOptions(){ HttpMethod = "GET", UpdateTargetId = "divData"})
                        )

请建议,我缺少的东西......

1 个答案:

答案 0 :(得分:0)

我开始知道我缺少的东西,Partial View没有得到Request.QueryString值,这就是分页控制丢失搜索参数并加载所有记录的原因。所以我在_PartialView.cshtml中修改了Pager控件,如下所示:

@Html.PagedListPager(Model,
                        page => Url.Action("AjaxMethod",
                            new
                            {
                                page,
                                searchByUserName = ViewBag.searchByUserName, // Request.QueryString["searchByUserName"],
                                searchByReaderName = ViewBag.searchByReaderName, // Request.QueryString["searchByReaderName"],
                                searchByReaderType = ViewBag.searchByReaderType, // Request.QueryString["searchByReaderType"],
                                searchByUploadDate = ViewBag.searchByUploadDate, // Request.QueryString["searchByUploadDate"],
                                sortBy = ViewBag.sortBy // Request.QueryString["sortBy"]
                            }),                        
                        PagedListRenderOptions.EnableUnobtrusiveAjaxReplacing(new AjaxOptions() 
                        { HttpMethod = "GET", UpdateTargetId = "divData", LoadingElementId="divloading" })
                        )

这些ViewBag对象在controllers动作方法中初始化。 对于上述问题,任何人都有比这更好的解决方案。请建议。