2013-09-22 2 views
2

У меня есть действие в моем HomeController так:MVC Действие Алиас Перенаправление

public ActionResult HowItWorks() 
    { 
     return View(); 
    } 

я могу получить доступ, перейдя к /Home/HowItWorks, как вы могли бы ожидать.

Как я могу сделать это так, чтобы он переместился в одно и то же место, если я перейду к /HowItWorks (опустив префикс «Домашний»)?

Я знаю, что могу изменить это в RouteConfig.cs, но мне было интересно, есть ли атрибут или что-то в этом роде.

ответ

4
 routes.MapRoute(
      name: "HowItWorks", 
      url: "HowItWorks", 
      defaults: new { controller = "Home", action = "HowItWorks", id = UrlParameter.Optional } 
     ); 

Вы можете сделать это, как указано выше. и да, вы должны поместить его в RouteConfig.cs

Если вы хотите, чтобы все ваши методы работы, как, что вы можете использовать следующие:

 routes.MapRoute(
      name: "HomePages", 
      url: "{action}/{id}", 
      defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional } 
     ); 

В этом случае, хотя, вы можете использовать один контроллер только, если и только если вы не определяете собственный маршрут следующим образом:

 routes.MapRoute(
      name: "Default", 
      url: "{controller}/{action}/{id}", 
      defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional } 
     ); 

Обратите внимание, что приоритет маршрутов имеет значение. т. е. в зависимости от того, какой из них согласован, сначала будет охвачено.

1

Я знаю, что я могу изменить это в RouteConfig.cs, но мне было интересно, если был атрибут или что-то подобное.

Посмотрите на AttributeRouting, это довольно круто.

Смежные вопросы