使用ASP.NET MVC很容易集成IoC容器来创建控制器。
同样的,使用WebForms创建页面和控件并传递任何依赖关系也是可能的吗?如果是,我需要在哪里插入它?
使用ASP.NET MVC很容易集成IoC容器来创建控制器。
同样的,使用WebForms创建页面和控件并传递任何依赖关系也是可能的吗?如果是,我需要在哪里插入它?
Web Forms不允许任何代码控制页面和控件的实例化,因此像页面工厂这样的东西是不可行的,也无法进行构造函数注入。
但是有一些变通方法/黑科技可以让你获得setter注入,正如其他人所提到的那样。
我知道这个问题很老了,但在.NET Framework 4.7.2+中,您可以在ASP.NET WebForm页面和用户控件中使用构造函数注入。
来自官方博客文章:
依赖注入可用的领域
现在WebForms应用程序中有许多可以使用依赖注入的领域。以下是完整列表。
- 页面和控件WebForms页面用户控件自定义控件
IHttpHandler
和IHttpHandlerFactory
IHttpModule
提供者- BuildProvider
ResourceProviderFactory
- 健康监测提供者
- 任何由
System.Web.Configuration.ProvidersHelper.InstantiateProvider
创建的基于ProviderBase
的提供者。例如:自定义会话状态提供者