6

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

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

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

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

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

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

4

1 回答 1

0

创建您自己的 RouteAttribute。

在此处查看文档:http: //msdn.microsoft.com/en-us/library/system.web.mvc.routeattribute (v=vs.118).aspx

实现这些接口,在 CreateRoute 方法中,您可以为 RouteEntry 对象选择路由处理程序。

我还没有尝试过,但是像下面这样的东西,你需要做更多的工作,但这应该会让你走上正轨。

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(); }
    }
}
于 2014-03-28T12:39:20.050 回答