Есть, хотя вам нужно переопределить ControllerFactory
. В вашем методе RegisterRoutes
в global.asax.cs добавьте эту строку:
public static void RegisterRoutes(RouteCollection routes) {
// Route code goes here
ControllerBuilder.Current.SetControllerFactory(typeof(MyControllerFactory));
}
А затем определите свой MyControllerFactory
класс
public class MyControllerFactory : DefaultControllerFactory {
public override IController CreateController(RequestContext requestContext, string controllerName) {
// poke around the requestContext object here
return base.CreateController(requestContext, controllerName);
}
}
Объект requestContext
содержит все данные маршрута и значения в нем. Вы можете использовать это, чтобы передать все, что вы хотите, конструктору вашего контроллера.
Отредактируйте, чтобы добавить, что так работают большинство популярных инжекторов зависимостей (например, StructureMap ).