如何在非MVC项目中为RazorTemplateEngin创建RazorEngineHost

时间:2016-05-03 09:52:38

标签: c# .net razor razorengine

我在控制台应用程序中使用RazorEngine

我想初始化RazorEngineHost并传入RazorTemplateEngin。但是正如我在MSDN文档中看到的那样,RazorEngineHost“并不是直接在您的代码中使用”。RazorEngineHost

那么创建RazorTemplateEngin的最佳方式是什么?

这个问题与How to use Razor View Engine in a console application?>完全不同我想使用RazorTemplateEngin因为我有模板而不是字符串。

1 个答案:

答案 0 :(得分:2)

如果你看一下MSDN上的RazorTemplateEngine,你可以看到它的文档也说“不打算直接从你的代码中使用”,这并不意味着你不能。如果要使用RazorTemplateEngine的实例,则必须传入RazorEngineHost实例。请查看此博客文章以了解用法:Leveraging Razor Templates Outside of ASP.NET

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

host.NamespaceImports.Add("System");
  

首先,RazorEngineHost的构造函数接受一个RazorCodeLanguage,指定目标模板的代码语言。此示例生成一个可以解析使用C#编写的Razor模板的主机。若要支持用Visual Basic编写的模板,请改为提供VBRazorCodeLanguage实例。附加的初始化程序属性指示代码生成器使用特定的类名发出代码,从自定义模板基类派生,并驻留在特定的名称空间中。最后,将System命名空间添加到生成的类所需的导入命名空间列表中,就像在普通的手写类中导入命名空间一样。