Ben Foster
Ben Foster

Reputation: 34800

ASP.NET MVC Injecting Http/Request/Controller context

Is there a recommended approach for injecting Http/Request/Controller context in an ASP.NET MVC application?

Previously I've only done this with HttpContext like so (I'm using StructureMap):

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

However, in some cases I also need to get access to the request context. Rather than building this manually, it would be nice to have it injected. A good example would be injecting a UrlHelper (requires RequestContext and RouteCollection).

Thanks

Ben

Upvotes: 4

Views: 2935

Answers (1)

Robin Clowers
Robin Clowers

Reputation: 2160

You might want to consider whether you really want to depend on those context objects directly (they tend to make things that depend on them hard to test). That said, you are on the right track:

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

Upvotes: 4

Related Questions