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

时间:2018-05-02 21:41:30

标签: c# asp.net-mvc asp.net-mvc-4

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

1 个答案:

答案 0 :(得分:2)

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

  

' RouteCollection'不包含的定义   ' MapMvcAttributeRoutes'没有扩展方法   ' MapMvcAttributeRoutes'接受第一个类型的参数   ' RouteCollection'可以找到。

如果要在MVC 5之前的MVC版本中使用属性路由,请安装AttributeRouting包,然后使用RegisterRoutes方法将控制器名称添加到ControllerName方法内的路由配置中{{{ 1}}属于任何控制器类名称):

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的详细信息。