【发布时间】:2019-01-31 11:41:55
【问题描述】:
首先我想说我是 Asp.net Core 的新手,并且还了解依赖注入 (DI) 的概念。我正在阅读很多试图理解它,所以我要求耐心等待。
我正在尝试 Razor 页面(不是 MVC),我的目标是向“_layout.cshtml”呈现部分视图,其中使用实体框架获得的信息在所有页面上都可用。
我在 Startup.cs 文件中添加了 DBContext 如下:
services.AddDbContext <AppDBContext> (options =>
options.UseSqlServer (Configuration.GetConnectionString ("AppDBContext")
在 MenuPartial.cshtml.cs 的“PageModel”中
public class MenuPartialModel: PageModel
{
private readonly AppDBContext _db;
public MenuPartialModel (AppDBContext db)
{
_db = db;
}
}
在 _layout.cshtm 文件中,我尝试了几种使用新模型实例调用 PartialAsync 的方法:
如果像下面这样设置新的实例模型,我将使用不带参数的构造函数,因此不会注入 DbContext
@await Html.PartialAsync ("MenuPartial", new MenuPartialModel ())
我也考虑过使用:
@await Html.PartialAsync ("MenuPartial", new MenuPartialModel (new AppDBContext ())
我认为这不是正确的方法。因为如果 DbContext 是自动注入的,我为什么要通过再次传递连接参数来执行新实例?
实现我的目标的最佳方法是什么?我考虑过使用 ViewComponents,但是,起初我想了解是否有任何方法可以实例化模型并使用注入 DBContext 的构造函数。
【问题讨论】:
标签: c# entity-framework asp.net-core razor-pages