MVC Route с дополнительным участком - PullRequest
0 голосов
/ 23 февраля 2011

Я хотел бы создать маршрут для моей страницы MVC, который выглядит следующим образом:

/ Статьи /
/ Статьи / Главная страница / 2
/ Статьи / Страница / 3

Я хочу, чтобы страница по умолчанию была 1, но если страница 1, то на самом деле не показывает / Page / piece.

Я начал с:

routes.MapRoute(
    "Articles",
    "Articles/Page/{page}",
            new { controller = "Articles", action = "Index", page = 1 }
);

Проблема в том, что когда я делаю:

 <%= Html.RouteLink("Articles", new { page = 1 }) %>

Мой маршрут заканчивается: / Статьи / Страница /

Ответы [ 2 ]

3 голосов
/ 23 февраля 2011

Для этого вам могут потребоваться два определения маршрута (не проверено):

routes.MapRoute(
    "ArticlesDefault",
    "Articles",
    new { controller = "Articles", action = "Index", page = 1 }
);

routes.MapRoute(
    "Articles",
    "Articles/Page/{page}",
    new { controller = "Articles", action = "Index" }
);

и действие вашего контроллера:

public ActionResult Index(int page)
{
    ...
}
1 голос
/ 23 февраля 2011

Введите оба значения:

// This will match routes where the page equals one. Since the page can't
// be specifed here, it will drop to the next one for page values other
// than 1.
routes.MapRoute("Articles",
                "Articles",
                new { controller = "Articles", action = "Index", page = 1 } 
); 

// This route handles pages other than 1
routes.MapRoute(null,
                "Articles/Page/{page}",
                new { controller = "Articles", action = "Index" }
); 

Вам не нужно ничего делать с контроллером.

...