しばやん雑記

Azure とメイドさんが大好きなフリーランスのプログラマーのブログ

RazorEngine を使ってみる

ASP.NET MVC 3 で追加された Razor ビューエンジンだけを切り出して、テンプレートエンジンとして使えるようにした RazorEngine というライブラリがあります。

Antaris/RazorEngine · GitHub
var Matt = new Hero(); » An early look at RazorEngine v3

とりあえず NuGet を使ってさくっとインストールしましょう。

Install-Package RazorEngine

使い方は非常に簡単で、Razor.Parse メソッドを呼び出すだけです。

var template = "Name: @Model.Name, Age: @Model.Age";
var model = new { Name = "hauhau", Age = 18 };

var result = Razor.Parse(template, model);

// result = "Name: hauhau, Age: 18"

template は普通の Razor で、model として匿名クラスを突っ込んでレンダリングさせています。

RazorEngine は事前にテンプレートをコンパイルしておいて、後から他のテンプレートに埋め込むという使い方が出来ます。MVC での Partial に近い使い方ですね。

// Template1 という名前で事前にコンパイル
var template1 = "hauhau";

Razor.Compile(template1, "Template1");

// Include メソッドで読み込み
var template = "@Include(\"Template1\")";

var result = Razor.Parse(template);

// result = "hauhau"

HTML の生成には通常の Razor があるので使う機会はほぼ無いと思いますが、メール本文やファイルのダウンロードなどで処理結果を文字列として受け取りたい場合には重宝しそうです。