Сначала я хотел бы сказать, что я новичок в Asp.net Core, а также с концепциями внедрения зависимостей (DI).Я читаю много, пытаясь понять это, поэтому я прошу терпения.
Я пытаюсь использовать Razor Pages (не MVC), и моя цель - сделать "_layout.cshtml" частичным представлением, в котором информация, полученная с помощью Entity Framework, доступна на всех страницах.
Я добавил DBContext в файл Startup.cs следующим образом:
services.AddDbContext <AppDBContext> (options =>
options.UseSqlServer (Configuration.GetConnectionString ("AppDBContext")
И в «PageModel» для MenuPartial.cshtml.cs
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.