Извлечение HTML-помощников из представлений Razor
ситуация
Мы перестраиваем веб-приложение (winforms) с нуля. Старое приложение будет продолжать работать, когда новое будет выпущено. Это означает, что новое приложение должно общаться со старой базой данных, я не могу ничего там изменить. Новое приложение будет построено с использованием .NET Core 2.0 MVC.
Старое приложение использует пользовательскую таблицу базы данных переводов на основе идентификатора языка и идентификатора перевода. Очень просто.
проблема
Старое приложение снова и снова вызывало базу данных для каждого перевода. Поскольку новое приложение должно повторно использовать эту таблицу, я предпочел бы иметь более умную систему. Из-за количества переводов я не хочу получать все данные по каждому запросу страницы. Я также не хочу делать вызов базы данных для каждого перевода.
идея
Моя идея состоит в том, чтобы создать собственный HtmlHelper (или внедренный экземпляр перевода с зависимостями, но это может быть сложнее в этой ситуации), которому нужен только идентификатор перевода. Помощник получит язык из куки. Таким образом, мы можем просто использовать следующий код в наших представлениях:
@ Html.Translate (1337)
Чего я хотел бы добиться, так это использовать первый Translate-вызов для сканирования RazorView для всех Translate-вызовов (с их параметрами). Таким образом, я могу использовать экземпляр Dependency Injected Scoped, чтобы сохранить все переводы в. Это означает, что мне нужно сделать только один вызов базы данных для каждого запрошенного представления.
Актуальный вопрос
Это звучит как хорошая идея, и будет ли это выполнимо? Я искал исходный код MVC, но не могу найти способ добиться чего-то подобного. Экземпляр RazorView в IHtmlHelper, похоже, не имеет списка IHtmlHelper или чего-то еще...