如何在MVC应用程序中进行分页和过滤

时间:2009-09-09 20:01:02

标签: asp.net-mvc pagination filtering mvccontrib

我遇到与此post相同的问题,但answer不起作用.... 方法'Pager'没有重载需要'4'参数 我使用旧的MVCContrib还是不推荐使用答案?

我的代码如下所示: 在控制器

 public ActionResult Index(int? clubid,int? page)
        {
            List<aspnet_Users> memberList = new List<aspnet_Users>();
            IEnumerable enumerable;
            if (!clubid.HasValue)
            {
                enumerable = aspnet_Users.Find(User.Identity.Name).Club != null ? aspnet_Users.FindAllByClubId(aspnet_Users.Find(User.Identity.Name).Club.Id) : aspnet_Users.FindAll();
            }
            else
            {
                if (clubid == 0)
                {
                    enumerable = aspnet_Users.FindAll();
                }
                else
                {
                    enumerable = aspnet_Users.FindAllByClubId(clubid.Value);
                }
            }
            ViewData["clubid"] = clubid;
            foreach (aspnet_Users member in enumerable)
            {
                memberList.Add(member);
            }
            return View(memberList.AsPagination(page ?? 1, 10));

        }

在视图中

 <h2>Index</h2>

 <% using (Html.BeginForm()) {
        ArrayList clubs=new ArrayList();
        clubs.Add(new Club(0, "Toate"));
        clubs.AddRange(Club.FindAll());

        %>

                 <%= Html.DropDownList("ClubId", new SelectList(clubs, "Id", "Name", (Model == null ? 0 : aspnet_Users.Find(Page.User.Identity.Name).Club != null ? aspnet_Users.Find(Page.User.Identity.Name).Club.Id : 0)))%>
                 <input type="submit" value="Filtreaza" />
  <% } %>

    <table>
        <tr>
            <th>Action</th>
            <th>
                UserName
            </th>
            <th>
                Club
            </th>

.....


         <%=Html.Encode(item.Male?"Male":"Female")%>
            </td>
             <td>
                <%=Html.Encode(item.BirthDay.HasValue?item.BirthDay.Value.ToString(ConfigurationManager.AppSettings["DateFormat"], CultureInfo.InvariantCulture):"")%>
            </td>

        </tr>

    <% }%>

    </table> <%= Html.Pager(Model)%>

如果我使用下拉列表过滤结果更改了clubid,则所选值不会传递到下一页......

下一页链接是会员/索引?页面= 2我想要会员/索引?clubid = 1&amp; page = 2

我试过了 &lt;%= Html.Pager(ViewData.Model.PageSize,ViewData.Model.PageNumber,ViewData.Model.TotalItemCount,new {categoryname = ViewData [“clubid”]})%&gt; 但我得到编译错误

  

方法'Pager'没有超载   '4'论点

我已经检查过,我有最新版本og mvccontrib(1.0.0.916)

1 个答案:

答案 0 :(得分:0)

不确定您到底要做什么 - 也许您可以发布一些代码。

也就是说,CodePlex提供的MvcContrib二进制文件已经过时了。具体来说,有一个很大改进的网格和分页模型。您应该从GitHub获取最新版本并构建自己的副本。