Вариант использования Отдельный шаблонизатор, который никак не мешает нормальной работе Razor в веб-приложении AspNetCore (2.X).
Проблема * 1006Пытаясь реализовать вышеизложенное, я создал целую кучу производных классов-оболочек, основанных на RazorViewEngine, RazorViewCompilerProvider, DefaultRazorPageFactoryProvider, DefaultRazorViewEngineFileProviderAccessor и RazorViewEngineOptions, в попытке, что они могут быть зарегистрированы с помощью DI, а также могут быть добавлены, если они не являются обычными.Путь кода бритвы.Я преуспел, за исключением одной раздражающей проблемы, из-за которой мне все еще нужно настроить мой пользовательский FileProvider (TemplateRepository) в пределах обычных RazorViewEngineOptions, а не в моем классе-обертке.
Например, в приведенном ниже коде из Startup.cs, даже если в моем пользовательском объекте параметров указан поставщик файлов, и именно это внедряется в классы-оболочки, TemplateRepository не вызывается для запроса на просмотр, если толькоВторой сервис. Настройка также включена (с помощью RazorViewEngineOptions).
services.Configure<TemplateOptions>(options =>
{
options.ViewLocationExpanders.Add(new TemplateNameExpander());
options.ViewLocationFormats.Add("{0}");
options.AreaViewLocationFormats.Add("{0}");
options.FileProviders.Clear();
options.FileProviders.Add(new TemplateRepository(new SqlConnectionFactory(configuration)));
});
services.Configure<RazorViewEngineOptions>(
options =>
{
options.FileProviders.Add(new TemplateRepository(new SqlConnectionFactory(configuration)));
});
Это подсказывает мне, что где-то в дереве зависимостей RazorViewEngine где-то внедряются RazorViewEngineOptions, но я не могу его найти.
Полный источник @ GitHub