Каким способом в .NET Core рекомендуется заполнять мастер страницу (_Layout.cshtml) динамическим контентом?
Использую Razor pages из Core 2.0.
Задача состоит в том, чтобы для каждой страницы, которая использует этот Layout выполнялись бы определенные методы некого класса. Например, в шапке страницы нужно отобразить счетчик уведомлений, и нужно чтобы каждый раз он пересчитывался. Для этого нужно создать соединение с БД, при этом передать в определенный метод DbContext или ConnectionString из настроек и выполнить запрос. Т.е. нужно разместить где то некий код и передать в него какие то объекты.
Однако Layout не имеет своего конструктора для использования DI и вообще не подразумевает интенсивного кодирования. Выполнять это все в Startup по-моему не грамотно, к тому же все равно нужно результат как-то передать в Layout.
Есть еще способ сделать такую вещь через ViewComponent.
Но такой вариант мне кажется неподходящим, т.к. если у меня на странице множество динамических данных, то создавать под каждый из них свой компонент как то слишком сложно.
Пока решил эту проблему с помощью свойства static объекта , но это противоречит концепции DI и вообще...
Хотелось бы выяснить общую практику: 1) где этот код размещать 2) как его вызвать 3) как передать в него необходимые объекты (DbContext, Configuration).
Инжектить можно прямо на странице @inject ModelOrService ModelOrService;
И в принципе в этом случае это может быть сервис, который будет работать с бд.
Но когда мне надо в шаблоне сделать вывод динамик контента, я это реализую в js. Или важно это решить именно Разором.
Да, наверное в моем случае более подходящим решением будет использование сервиса. Ajax запросы тоже можно, но для этого случая не очень мне нравятся, т.к. усложняют решение.
Спасибо за подсказку.