2010-12-15 71 views
1

主办Razor视图引擎,我想用Razor视图引擎之外的ASP.NET MVC来生成HTML的电子邮件,我喜欢的语法和似乎没有必要的时候,我已经使用另一种模板引擎在我的项目中有剃须刀。使用视图模型

所以我环顾四周,发现如何做到这本指南.. http://blog.andrewnurse.net/2010/11/16/HostingRazorOutsideOfASPNetRevisedForMVC3RC.aspx

不幸的是我无法找到指定一个视图模型,这是可悲的任何方式,因为我真的,真的很喜欢即使对我的电子邮件也有强烈的意见。

那么有什么办法解析ASP.NET MVC以外的Razor模板与强类型的视图模型,还是这么麻烦,这是不值得的麻烦?

+0

看一看http://razorengine.codeplex.com/了承载预编译包剃刀外MVC – Buildstarted 2010-12-15 15:38:21

回答

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生成结果,生成的方法和内容由您决定。

+0

谢谢,作品像一个魅力。 :) – zidar 2010-12-15 13:14:57

2

随着最后稳定RazorEngine这足以说明

@inherits RazorEngine.Templating.TemplateBase<MyModel> 

,除非你需要一些更多的功能

+0

谢谢,这只是我想要让RazorEngine正常工作的线路! – 2012-09-07 20:20:42