У меня есть следующие действия в контроллереasp.net MVC и маршрутизации
public ActionResult Index(int? pageNumber)
public ActionResult Details(string seoFriendlyName)
И я хочу иметь следующие маршруты:
~/article/ -> Action = Index, pageNumber = 1
~/article/page-5 -> Action = Index, pageNumber = 5
~/article/page-1 -> ~/article/
~/article/foo -> Action = Details, seoFriendlyName = foo
Я пытался определить следующие маршруты, но он не работает:
routes.MapRoute(
null,
"article/page-{pageNumber}",
new { controller = "MyController", action = "Index", pageNumber = 1 },
new[] { "MyNamespace" }
);
routes.MapRoute(
null,
"article",
new { controller = "MyController", action = "Index", },
new[] { "MyNamespace" }
);
routes.MapRoute(
null,
"article/{seoFriendlyName}",
new { controller = "MyController", action = "Details", },
new[] { "MyNamespace" }
);
Любая помощь была бы принята с благодарностью!
Если я называю 'Url.Action ("Index", "MyController")', то '~/статьи/page' воздастся вместо' ~/article' –
Если вы хотите, чтобы это было '~/article', вам нужно будет изменить порядок маршрутов. Кроме того, как предположил Ян, вы должны переместить свой параметр pageNumer по умолчанию на другой маршрут. Я обновлю свой ответ в одно мгновение. –
Обновлено ответ –