我想在ASP.NET MVC之外使用Razor View Engine为电子邮件生成HTML,我喜欢语法,当我的项目中已经有Razor时,似乎没有必要使用另一个模板引擎。
所以我环顾四周,找到了如何做到这个指南.. http://blog.andrewnurse.net/2010/11/16/HostingRazorOutsideOfASPNetRevisedForMVC3RC.aspx
不幸的是我无法找到任何指定视图模型的方法,这很难过,因为我真的非常希望即使对于我的电子邮件也有强类型视图。
那么有没有办法在ASP.NET MVC之外使用强类型视图模型解析Razor模板,还是这么麻烦,不值得麻烦?
答案 0 :(得分:2)
使用@model标签实际上是@inherits标签的快捷方式。
您指定了类,您生成的类将继承自使用@inherits指定的类。
因此,如果您指定@inherits MyTemplate<MyModel>
MyTemplate应如下所示:
class MyTemplate<T> {
public T Model { get; set; }
public abstract void Execute();
public virtual void Write(object value) {
WriteLiteral(value);
}
public virtual void WriteLiteral(object value) {
// Actual writing goes here
}
}
剃刀解析的结果,你需要编译,并从。
创建一个实例创建实例后,您可以设置Model属性,并调用Execute生成结果,生成的方式和内容取决于您。
答案 1 :(得分:2)
使用最后一个稳定的RazorEngine,足以指定
@inherits RazorEngine.Templating.TemplateBase<MyModel>
除非您需要更多功能