2010-12-15 93 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