Mam domyślny C# MVC tras:C# MVC routing - wiele tras
routes.MapRoute(
"Default",
"{controller}/{action}/{id}"
new { controller = "Home", action = "Index", id = "Welcome" }
);
Teraz będę się adresy URL, takich jak:
mysite.com/Home/Index/Page1
mysite.com/Home/Index/Page2
mysite.com/Home/Index/Page3
mysite.com/Account/Login
mysite.com/Account/Etc
Ale chciałbym mieć pierwszy zestaw z krótszym url jak:
mysite.com/Page1
mysite.com/Page2
mysite.com/Page3
mysite.com/Account/Login
mysite.com/Account/Etc
spodziewałem kod, aby być naprawdę proste jak:
routes.MapRoute(
"Shorturl",
"{id}",
new { controller = "Home", action = "Index", id = "Welcome" }
);
routes.MapRoute(
"Default",
"{controller}/{action}/{id}"
new { controller = "Home", action = "Index", id = "Welcome" }
);
Ale to nie działa. Zajmie tylko pierwszą trasę i zapomni o drugiej. Jak ustawić program w pierwszej linii, gdy jest tylko jeden parametr (np. mysite.com/Page1) i podjąć drugą trasę, gdy masz wiele tras (jak mysite.com/Account/Login)?
Edit: mogę zrobić:
routes.MapRoute("Short", "short/{id}", new { controller = "Home", action = "Indx", id = "Page1" });
Ale wtedy musiałbym brzydki "short /" w adresie URL. mogę go naprawić z:
routes.MapRoute("Page1", "Page1", new { controller = "Home", action = "Index", id = "Page1" });
Ale wtedy trzeba dodać ręcznie każdą nową stronę ...
http://stackoverflow.com/questions/2975642/routing-in-asp-net-mvc-2-0 – CodeCaster