0

我已经在我的应用程序中设置了简单的分页系统,该系统使用了 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/米杰斯塔/页/2

为此,我在我的AdminAreaRegistration.cs中做了这个条目

       context.MapRoute(
            "pMjesta",
            "Admin/Mjesta/Page/{page}",
            new {controller = "Mjesta", action = "Index"});

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

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

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

4

2 回答 2

2

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

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

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

并且它列在您的新路由之前,您的首选 url 将首先匹配并使用此路由。

于 2011-04-30T13:09:29.320 回答
1
   context.MapRoute(
        "pMjesta",
        "Admin/Mjesta/Page/{page}",
        new {controller = "Mjesta", action = "Index", page = "{page}"});
于 2011-04-30T08:44:33.793 回答