4

Использование библиотеки AttributeRouting, я был в состоянии настроить атрибут маршрутизации для использовать обработчик маршрута (унаследованный MvcRouteHandler):Использовать пользовательский маршрут обработчик с атрибутом MVC5 маршрутизации

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

Кроме того, перед MVC5, это было можно изменить обработчик маршрута любого существующего маршрута:

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

с MVC5 помощью маршрутизации атрибутов, коллекция маршрутов содержит внутренний (например, RouteCollectionRoute), и не представляется возможным изменить свойство маршрута RouteHandler.

Как изменить обработчик маршрута по умолчанию, используемый при работе с маршрутизацией атрибутов в MVC5.1?

+0

Вы имеете в виду ограничения по маршруту? –

+0

@SteveAndrews Нет, этот вопрос касается изменения RouteHandler. Но похоже, что это невозможно, по крайней мере, не с маршрутизацией атрибутов в MVC5.1 :( – marapet

+0

Да, RouteHandler может быть по-прежнему изменен, кажется, что эта библиотека просто нуждается в обновлении. – JuhaKangas

ответ

0

Создайте свой собственный RouteAttribute.

Проверить документы здесь: http://msdn.microsoft.com/en-us/library/system.web.mvc.routeattribute(v=vs.118).aspx

Реализация этих интерфейсов и в методе CreateRoute вы можете выбрать вам routehandler для объекта 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(); } 
    } 
} 
+0

MapMvcAttributeRoutes() автоматически сопоставляет ваш пользовательский атрибут маршрута при использовании этих интерфейсов. – JuhaKangas

+0

Но это будет означать не только использование пользовательского атрибута везде, но и переопределение любого DirectRouteFactoryContext Делает. Похоже, он еще более усложняется;) – marapet

+0

Я могу только согласиться с y ou, я покупаю, чтобы использовать пользовательский атрибут, но переопределение CreateRoute точно не кажется большим. Наследуемый routeautribute (он запечатан прямо сейчас), который позволил бы установить маршрут-манипулятор, было бы неплохо. Но да, это единственный вариант, который я смог найти прямо сейчас. – JuhaKangas