使用库AttributeRouting,我可以将属性路由配置为使用自定义路由处理程序(继承MvcRouteHandler
):
routes.MapAttributeRoutes(cfg =>
{
cfg.UseRouteHandler(() => new MultiCultureMvcRouteHandler());
}
);
此外,在MVC5之前,可以更改任何现有路由的路由处理程序:
(routes["myroute"] as Route).RouteHandler = new MyCustomRouteHandler();
使用属性路由的MVC5,routes集合包含内部类(例如RouteCollectionRoute
),似乎无法更改路由的RouteHandler
属性
如何更改在MVC5.1中使用属性路由时使用的默认路由处理程序?
答案 0 :(得分:0)
创建您自己的RouteAttribute。
点击此处的文档:http://msdn.microsoft.com/en-us/library/system.web.mvc.routeattribute(v=vs.118).aspx
实现这些接口,在CreateRoute方法中,您可以为RouteEntry对象选择routehandler。
我还没有尝试过,但是下面的内容,你需要做更多的工作,但这应该让你走上正轨。
public class MyRouteAttribute : Attribute, IDirectRouteFactory, IRouteInfoProvider
{
public RouteEntry CreateRoute(DirectRouteFactoryContext context)
{
return new RouteEntry("Test", new Route("Url", new CustomRouteHandler()));
}
public string Name
{
get { throw new NotImplementedException(); }
}
public string Template
{
get { throw new NotImplementedException(); }
}
}