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()
    {
        ...
    }
}