我正在使用搜索,分页和排序开发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"}) )
请建议,我缺少的东西......
答案 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动作方法中初始化。 对于上述问题,任何人都有比这更好的解决方案。请建议。