Как создать RazorEngineHost для RazorTemplateEngin в проекте, отличном от MVC

Я использую RazorEngine в консольном приложении.

Я хочу инициализировать RazorEngineHost и перейти в RazorTemplateEngin. Однако, как я вижу, в документации MSDN говорится, что RazorEngineHost «не предназначен для использования непосредственно из вашего кода». RazorEngineHost

Итак, как лучше всего создать RazorTemplateEngin?

Этот вопрос сильно отличается от Как использовать Razor View Engine в консольное приложение?> Я хочу использовать RazorTemplateEngin, потому что у меня шаблон, а не строка.


person shiva    schedule 03.05.2016    source источник


Ответы (1)


Если вы посмотрите на RazorTemplateEngine в MSDN вы можете видеть, что в документации к этому также говорится, что «не предназначено для использования непосредственно из вашего кода», это не значит, что вы не можете. Если вы хотите использовать экземпляр RazorTemplateEngine, вам нужно передать экземпляр RazorEngineHost. Ознакомьтесь с этой записью в блоге, чтобы узнать об использовании: Использование шаблонов Razor вне ASP.NET

var language = new CSharpRazorCodeLanguage();
var host = new RazorEngineHost(language) {
   DefaultBaseClass = "OrderInfoTemplateBase",
   DefaultClassName = "OrderInfoTemplate",
   DefaultNamespace = "CompiledRazorTemplates",
};

host.NamespaceImports.Add("System");

Для начала конструктор RazorEngineHost принимает RazorCodeLanguage, указывающий язык кода целевого шаблона. В этом примере создается узел, который может анализировать шаблоны Razor, написанные с помощью C#. Для поддержки шаблонов, написанных на Visual Basic, вместо этого укажите экземпляр VBRazorCodeLanguage. Дополнительные свойства инициализатора предписывают генератору кода создавать код с определенным именем класса, производным от базового класса пользовательского шаблона и находящимся в определенном пространстве имен. Наконец, добавьте пространство имен System в список импортированных пространств имен, необходимых для компиляции сгенерированного класса, точно так же, как вы бы импортировали пространство имен в обычном, написанном от руки классе.

person BunkerMentality    schedule 03.05.2016