2013-09-22 51 views
2

我在HomeController像這樣的動作:MVC行動別名重定向

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

我可以去/Home/HowItWorks如您所想訪問此。

如果我去/HowItWorks(省略「Home」前綴),我該如何使它能夠到達相同的位置?

我知道我可以在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,這很酷。