Можно ли получить экземпляр контроллера для некоторой строки Url в ASP.NET MVC3? - PullRequest
1 голос
/ 08 августа 2011

если у меня есть маршрут типа /foo/bar/pewpew .. возможно ли получить экземпляр контроллера, который также отображается в этом маршруте?

Ответы [ 2 ]

4 голосов
/ 08 августа 2011

Чтобы получить имя контроллера, вы можете вызвать создание фальшивого HttpContextBase, который возвращает ваш URL в его Request, затем передать его в RouteTable.Routes.GetRouteData и проверить значения area и controller.

Чтобы получить экземпляр контроллера, передайте RequestContext, состоящий из этих HttpContextBase и RouteData, ControllerBuilder.Current.GetControllerFactory.CreateController.

1 голос
/ 08 августа 2011

Попробуйте,

        var wrapper=new HttpContextWrapper(System.Web.HttpContext.Current);
        var routeData = RouteTable.Routes.GetRouteData(wrapper);
        var controller = ControllerBuilder.Current.GetControllerFactory().CreateController(new RequestContext(wrapper, routeData), routeData.Values["controller"].ToString());

Обновление, вы можете использовать это вместо.

var wrapper = new HttpContextWrapper(new System.Web.HttpContext(new HttpRequest(null, "http://localhost:4836/", null), new HttpResponse(new StringWriter())));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...