如何做到在MVC应用程序分页和过滤(How to do pagination and filteri

2019-07-31 03:52发布

我使用的例子的Martijn博兰的页面。

当我点击页码我的应用程序的URL发生变化:

http://localhost:1202/Issue?page=6

到现在为止还挺好。

问题是,当我补充一点变化,我不能页面以及过滤提交下拉列表。

如果我改变我的下拉列表中,我应该通过在querysting的专案编号,我partail视图将刷新并显示我的过滤recoreds。
现在,当我网页过滤参数不会在查询字符串坚持,以及在我的下拉不沾的选择。

我怎样才能页面以及过滤器?

的Index.aspx

<form id="form-post-project-selection" class="post-comments" method="get">
 <label for="Country">Project:</label>
 <%= Html.DropDownList("ProjectList", "--All--") %>
</form>

<% Html.RenderPartial("MyIssues", Model); %>

<script type="text/javascript">
         $("#form-post-project-selection").submit(function(evt) {
         var frm = $("#form-post-project-selection");
         var action = frm.attr("action");
         var serializedForm = frm.serialize();
         var projectId = jQuery.trim($("ProjectList").val());
         if (projectId.length < 1 || projectId == "-1")
             return;
     });
     $("#ProjectList").change(function() {
         $("#form-post-project-selection").submit();
     });
</script>

Answer 1:

我觉得你有几个选择这里。

第一个将要使用Ajax回调到一个控制器获得了“分页”对象集合回来,每次您筛选回传过滤器ID只得到你需要为你想要的页面结果集的输出。 你可以做与阿贾克斯以及回传过滤器ID与Ajax调用,所以你会得到过滤和分页对象返回或者你可以重定向到一个不同的URL下面分页解释分页。

如果使用整页回发到服务器上的下拉菜单更改值,那么你可以将用户重定向到与它例如过滤器ID的另一个网址。 问题/过滤/ 1

这样,每一个分页链接使用,你最终会与像问题/过滤/ 1?页= 6一个URL,你不会失去你的过滤时间。

请注意,页面视图并不需要改变。

尽管所有的函数结束了相同的答案,这个问题是在下面的意见,并张贴在这里为方便。

<%= Html.Pager(ViewData.Model.PageSize, ViewData.Model.PageNumber, ViewData.Model.TotalItemCount, new { categoryname = ViewData["CategoryDisplayName"] } )%>


文章来源: How to do pagination and filtering in MVC applications