我可以使用 routes.MapMvcAttributeRoutes();在 MVC4 上?

Can i use routes.MapMvcAttributeRoutes(); on MVC4?

我尝试在 MVC4 上创建一个控制器 我需要特殊属性的链接 所以当我打开 RouteConfig.cs 我找不到这个: routes.MapMvcAttributeRoutes(); 并给我一个错误。 那么我如何为 MVC 4 上的每个控件和操作设置一个特殊属性

MapMvcAttributeRoutes() 扩展方法仅在 MVC 版本 5 或更高版本中可用,因为 RouteCollectionAttributeRoutingExtensions class 在以前的版本中不存在。在 MVC 4 或更低版本中使用该方法将显示此错误:

'RouteCollection' does not contain a definition for 'MapMvcAttributeRoutes' and no extension method 'MapMvcAttributeRoutes' accepting a first argument of type 'RouteCollection' could be found.

如果您想在早于 MVC 5 的 MVC 版本中使用属性路由,请安装 AttributeRouting 包,然后使用 AddRoutesFromController() 方法将控制器名称添加到 RegisterRoutes 方法内的路由配置中( ControllerName 属于任何控制器 class name):

public static void RegisterRoutes(RouteCollection routes)
{
    routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
    routes.MapAttributeRoutes(config =>
    {
        config.AddRoutesFromController<ControllerName>();
    });
}

然后,您可以使用类似于 MVC 5 时尚的 RouteAttribute(和 RoutePrefixAttribute):

[RoutePrefix("Cars")]
public class CarsController : Controller
{
    [Route("Cars/Index")]
    public ActionResult Index()
    {
        // do something
    }
}

您可以找到 AttributeRouting 包使用的详细信息 here