ASP.NET MVC注入Http / Request / Controller上下文

时间:2011-03-26 15:56:12

标签: asp.net-mvc-3 structuremap httpcontext requestcontext

是否有推荐的方法在ASP.NET MVC应用程序中注入Http / Request / Controller上下文?

以前我只用HttpContext这样做(我正在使用StructureMap):

For<HttpContextBase>().Use(ctx => new HttpContextWrapper(HttpContext.Current));

但是,在某些情况下,我还需要访问请求上下文。不是手动构建,而是注入它会很好。一个很好的例子是注入UrlHelper(需要RequestContext和RouteCollection)。

由于

1 个答案:

答案 0 :(得分:4)

您可能想要考虑是否真的想直接依赖这些上下文对象(它们往往会使依赖它们的东西难以测试)。也就是说,你走在正确的轨道上:

For<RequestContext>().Use(ctx => HttpContext.Current.Request.RequestContext);
For<RouteCollection>().Use(ctx => RouteTable.Routes);