как настроить маршрутизацию подкачки в приложении asp.net mvc3 - PullRequest
0 голосов
/ 30 апреля 2011

Я установил простую систему подкачки в моем приложении, которая использует идею из учебника 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"});

Но когда я пытаюсь получить доступ к URL-адресу, например / Admin / Mjesta / Page / 2 , он все равно выдает ошибку 404.

Моя идея заключалась в том, чтобы сначала создать какую-то общую запись подкачки в MapRouting, чтобы я мог использовать одно и то же частичное представление для отображения элементов управления подкачкой для каждого списка, где мне это нужно, но поскольку я не мог заставить его работать пробовал этот более конкретный подход, но я все еще не могу заставить контроллер реагировать на этот запрос URL.

Любые идеи и / или предложения, пожалуйста?

Ответы [ 2 ]

2 голосов
/ 30 апреля 2011

У вас есть другие маршруты для этой области, с которыми может совпасть URL?

Например, если у вас все еще есть маршрут области по умолчанию:

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

, и он указан перед вашим новым маршрутом, ваш предпочтительный URL будет совпадать и использовать этот маршрут первым.

1 голос
/ 30 апреля 2011
   context.MapRoute(
        "pMjesta",
        "Admin/Mjesta/Page/{page}",
        new {controller = "Mjesta", action = "Index", page = "{page}"});
...