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