我想知道谁调用/创建了PageModel派生类的构造函数(在我的例子中IndexModel)。在我看来,通过对剃刀页面的每个请求,提供给RazorPage通过的类@model被实例化,还想知道谁提供构造函数参数上下文,即 EF 上下文:
public IndexModel(RazorPagesMovie.Models.RazorPagesMovieContext context)
{
_context = context;
}
我想知道谁调用/创建了PageModel派生类的构造函数(在我的例子中IndexModel)。在我看来,通过对剃刀页面的每个请求,提供给RazorPage通过的类@model被实例化,还想知道谁提供构造函数参数上下文,即 EF 上下文:
public IndexModel(RazorPagesMovie.Models.RazorPagesMovieContext context)
{
_context = context;
}
ASP.NET 中的依赖注入 (DI) 框架负责创建您的IndexModel.
DI 创建实例并提供已在启动时注册到服务提供者的参数类ConfigureServices()
请求时会发生什么,是
IndexModel通过询问 DI 来创建你的。这与调用基本相同services.GetService<IndexModel>()。您的页面模型已自动为您注册到 DI 容器IndexModel构造函数有什么参数(可以有你需要的参数),只要它们已经被注册,就会被 DI 填充。如果有任何未注册的类型作为参数,则抛出异常在这种情况下,如果您列出的代码有效,那么您RazorPagesMovieContext在ConfigureServices().
阅读有关 asp.net 核心中 DI 的更多信息:https ://docs.microsoft.com/en-us/aspnet/core/fundamentals/dependency-injection?view=aspnetcore-2.2
还要注意关于服务寿命的部分。