У меня есть по умолчанию C# MVC маршруты:C# MVC маршрутизации - несколько маршрутов
routes.MapRoute(
"Default",
"{controller}/{action}/{id}"
new { controller = "Home", action = "Index", id = "Welcome" }
);
Теперь я получить URLs как:
mysite.com/Home/Index/Page1
mysite.com/Home/Index/Page2
mysite.com/Home/Index/Page3
mysite.com/Account/Login
mysite.com/Account/Etc
Но я хотел бы иметь первый сет с более коротким URL, как:
mysite.com/Page1
mysite.com/Page2
mysite.com/Page3
mysite.com/Account/Login
mysite.com/Account/Etc
Я ожидал, что код будет очень простым, как:
routes.MapRoute(
"Shorturl",
"{id}",
new { controller = "Home", action = "Index", id = "Welcome" }
);
routes.MapRoute(
"Default",
"{controller}/{action}/{id}"
new { controller = "Home", action = "Index", id = "Welcome" }
);
Но это не работает. Это займет только первый маршрут и забудет второй. Как вы можете сделать свою программу первым маршрутом, когда есть только один параметр (например, mysite.com/Page1) и взять второй маршрут, когда у вас несколько маршрутов (например, mysite.com/Account/Login)?
Edit: я могу сделать:
routes.MapRoute("Short", "short/{id}", new { controller = "Home", action = "Indx", id = "Page1" });
Но тогда я бы уродливый "короткий /" в URL. я могу это исправить с:
routes.MapRoute("Page1", "Page1", new { controller = "Home", action = "Index", id = "Page1" });
Но тогда мне нужно добавить каждую новую страницу вручную ...
http://stackoverflow.com/questions/2975642/routing-in-asp-net-mvc-2-0 – CodeCaster