如何在asp.net mvc3应用程序中设置分页路由

问题描述 投票:0回答:2

我在我的应用程序中设置了简单的分页系统,该系统使用 nerddinner 教程中的想法,使用分页列表类:

   public class PaginatedList<T> : List<T>    {
        public int PageIndex {}
        public int PageSize {}
        public int TotalCount {}
        public int TotalPages {}

        public PaginatedList(IQueryable<T> source, int pageIndex, int pageSize){}

        public bool HasPreviousPage {}

        public bool HasNextPage {}  }

分页工作正常,我使用它通过 LINQ2SQL 从数据库获取长表,如以下控制器操作所示:

  public ActionResult Index(int page=0)
    {
        const int pageSize = 10;

        var source = repo.SvaMjesta();
        var paginatedList = new PaginatedList<Mjesto>(source, page, pageSize);

        return View(paginatedList);
    }

分页工作正常,只要我使用查询类型o URL:/Admin/Mjesta?page=2
,我就可以访问任何页面 这是我希望避免的事情,并且想使用简单的 URL,例如:/Admin/Mjesta/Page/2

为此目的,我在我的 AdminAreaRegistration.cs

中添加了此条目
       context.MapRoute(
            "pMjesta",
            "Admin/Mjesta/Page/{page}",
            new {controller = "Mjesta", action = "Index"});

但是当我尝试访问诸如 /Admin/Mjesta/Page/2 之类的 URL 时,它仍然会抛出 404 错误。

我的想法是首先在 MapRouting 中构建某种通用分页条目,这样我就可以使用相同的部分视图来渲染我有这种需要的每个列表的分页控件,但由于我无法使其工作,所以我尝试过这是更具体的方法,但我仍然无法让控制器对此 URL 请求做出反应。

有什么想法和/或建议吗?

asp.net-mvc-3 pagination asp.net-mvc-routing asp.net-mvc-3-areas
2个回答
2
投票

您是否有该网址可以匹配的该区域的其他路线?

例如,如果您仍然有默认区域路线:

context.MapRoute(
    "DefaultAreaRoute",
    "Admin/{controller}/{action}/{id}",
    new { controller = "Home", action = "Index", id = Url.Optional });

并且它列在您的新路线之前,您的首选网址将首先匹配并使用该路线。


1
投票
   context.MapRoute(
        "pMjesta",
        "Admin/Mjesta/Page/{page}",
        new {controller = "Mjesta", action = "Index", page = "{page}"});
© www.soinside.com 2019 - 2024. All rights reserved.