2010-12-15 9 views
1

ASP.NET MVCの外でRazor View Engineを使用して電子メール用のHTMLを生成したいのですが、構文が好きで、すでに別のテンプレートエンジンを使用する必要はないようです私のプロジェクトには剃刀を持っています。ビューモデルを使用してRazor View Engineをホスティングする

だから私は残念ながら、私は本当に、本当にしたいと思いますので、悲しいである、ビューモデルを指定する任意の方法を見つけることができません http://blog.andrewnurse.net/2010/11/16/HostingRazorOutsideOfASPNetRevisedForMVC3RC.aspx

...周りを見て、それを行う方法については、このガイドを見つけました私の電子メールであっても強く型付けされたビューを持っています。

強く型付けされたビューモデルでASP.NET MVC以外でRazorテンプレートを解析する方法はありますか、それほど問題になることはありませんか?

+0

はホストビルド済みパッケージのhttp://razorengine.codeplex.com/を見てくださいMVC外の剃刀 – Buildstarted

答えて

2

@modelタグを使用することは、実際には@inheritsタグのショートカットです。

クラスを指定すると、生成されたクラスは@inheritsで指定されたクラスから継承します。かみそりの解析から

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 
    } 

} 

結果、コンパイル、およびからインスタンスを作成する必要があります。

あなたが指定した場合@inherits MyTemplate<MyModel>

MyTemplateには次のようになります。

インスタンスを作成したら、Modelプロパティを設定してExecuteを呼び出して結果を生成することができます。生成する方法と結果はあなた次第です。あなたには、いくつかのより多くの機能を必要としない限り、

@inherits RazorEngine.Templating.TemplateBase<MyModel> 

を指定するために十分である最後の安定RazorEngineで

+0

ありがとうございます、魅力のように動作します。 :) – zidar

2

+0

おかげさまで、これは私がRazorEngineを正しく動作させるために探していたラインでした! –

関連する問題