使用自定义路由处理程序与MVC5属性路由

时间:2014-03-13 10:15:25

标签: asp.net-mvc ihttphandler attributerouting asp.net-mvc-5.1 mvcroutehandler

使用库AttributeRouting,我可以将属性路由配置为使用自定义路由处理程序(继承MvcRouteHandler):

routes.MapAttributeRoutes(cfg =>
    {
        cfg.UseRouteHandler(() => new MultiCultureMvcRouteHandler());
    }
);

此外,在MVC5之前,可以更改任何现有路由的路由处理程序:

(routes["myroute"] as Route).RouteHandler = new MyCustomRouteHandler();

使用属性路由的MVC5,routes集合包含内部类(例如RouteCollectionRoute),似乎无法更改路由的RouteHandler属性

如何更改在MVC5.1中使用属性路由时使用的默认路由处理程序?

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(); }
    }
}