2011-03-26 36 views
4

在ASP.NET MVC應用程序中注入Http/Request/Controller上下文有推薦的方法嗎?ASP.NET MVC注入Http /請求/控制器上下文

以前我只用HttpContext的像這樣做到了這一點(我用StructureMap):

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

然而,在某些情況下,我還需要獲得訪問請求上下文。不是手動構建,而是注入它會很好。一個好的例子是注入一個UrlHelper(需要RequestContext和RouteCollection)。

感謝

回答

4

你可能要考慮是否真的要依賴於這些方面直接對象(他們往往使依賴於他們難以測試的東西)。這就是說,你在正確的軌道上:

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

嗨羅賓,我一般只擁有這些依賴純粹的語境對象,例如抽象訪問之類的當前用戶SiteContext上下文等等。我可以一直嘲笑HttpContextBase無論如何。我也發現這篇文章看起來很有趣 - http://kozmic.pl/2010/05/22/contextual-controller-injection-in-asp-net-mvc-with-castle-windsor/ – 2011-03-29 16:32:42

+0

爲什麼它會使它難以測試,他們被注入,所以可以被嘲笑嗎? (我即將做到這一點,以及我即將做到這一點) – NimChimpsky 2014-04-09 15:48:57