Есть несколько способов, включая передачу его как ViewData
. Я обнаружил, что инъекция - один из самых чистых способов:
Инициализируйте ваш _SidebarModel
как службу. Это может быть ограничено, если вы планируете использовать с ним какой-либо сервис (например, DBContext
). Вы можете использовать это в своем классе запуска:
services.AddSingleton<_SidebarModel>();
Или, если вы хотите инициализировать его здесь:
services.AddSingleton<>(new _SidebarModel { });
Теперь вместо @model MyWeb.Pages.Shared._SidebarModel
вы можете использовать:
@inject MyWeb.Pages.Shared._SidebarModel MyModel
Вы также можете всегда вводить и контролировать модель из моделей вашего вида.
Вы можете добавить некоторые базовые функциональные возможности, используя модели просмотра страниц с таким классом:
public class InjectablePage : PageModel
{
private readonly HttpContext httpContext;
public InjectablePage(HttpContext httpContext)
{
this.httpContext = httpContext;
if (httpContext.Request.Method == "GET") OnGet();
}
public virtual void OnGet() { }
}
Вы можете расширить это вместо PageModel
в _SidebarModel