Я думаю, что лучший способ это:
routes.MapRoute("home", "home", new { controller = "Home", action = "Index" });
routes.MapRoute("about", "about", new { controller = "Home", action = "About" });
routes.MapRoute("contact", "contact", new { controller = "Home", action = "Contact" });
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
);
и когда вы хотите создать ссылку, используйте:
@Html.RouteLink("Home", "home", new{/* route values */}, new {/* html attribues */})
OR
@Html.RouteLink("Home", "home")
вместо:
@Html.ActionLink("Home", "Index", "Home", new{/* route values */}, new {/* html attribues */})
это работает для меня и должно работать для вас тоже.
UPDATE:
Вы можете создать символ, например @
(или -
или что-нибудь еще), перед частью action
в URL, чтобы сделать URL уникальным, например:
routes.MapRoute(
"test", // route name
"@{action}", // url and parameters
new {controller = "MyHome", action = "Home"} // parameter defaults
);
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
);
таким образом, ваши URL-адреса отличаются от маршрута карты по умолчанию, и вы можете создавать URL-адреса, такие как:
site.com/@Home
site.com/@About
site.com/@Contact
но первое, по-моему, лучше, и я всегда этим пользуюсь.