MVC 中的屬性路由

隨著路由定義的經典方式 MVC WEB API 2 和 MVC 5 框架介紹 Attribute routing

public class RouteConfig
{
    public static void RegisterRoutes(RouteCollection routes)
    {
        routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
 
        // This enables attribute routing and must go  before other routes are added to the routing table.
        // This makes attribute routes have higher priority
        routes.MapMvcAttributeRoutes();  
    }
}

對於控制器內具有相同字首的路由,可以使用 RoutePrefix 屬性為控制器內的整個操作方法設定公共字首。

[RoutePrefix("Custom")]
public class CustomController : Controller
{
    [Route("Index")]
    public ActionResult Index()
    {
        ...
    }
}

RoutePrefix 是可選的,它定義了 URL 的一部分,該部分以控制器的所有操作為字首。

如果你有多個路由,則可以通過捕獲操作作為引數來設定預設路由,然後將其應用於整個控制器,除非在覆蓋預設路由的某些操作方法上定義特定的 Route 屬性。

[RoutePrefix("Custom")]
[Route("{action=index}")]
public class CustomController : Controller
{
    public ActionResult Index()
    {
        ...
    }

    public ActionResult Detail()
    {
        ...
    }
}