102

Razor View Engine を見ると、特に html の生成に結び付けられていない、非常に適切で簡潔な構文が表示されます。だから、たとえばテキストやコードを生成するために、「通常の」.net環境でasp.netの外部のエンジンを使用するのはどれほど簡単だろうか.

ポインタ、例、コメント、または説明は大歓迎です。

4

5 に答える 5

79

ここには 2 つの問題があります。

  1. はい、ASP.NET アプリ ドメインのコンテキスト外で Razor View Engine を実行できます。 -aspnet-revised-for-mvc3-rc.html
  2. ただし、Razor パーサーが の存在を使用して<tags>コードとマークアップの間の遷移を判断するという意味で、Razor は依然として主に xml のようなマークアップ (HTML など) の生成に重点を置いています。おそらくそれを使用して任意のテキストを生成できますが、出力が目的に関する Razor の仮定と一致しない場合に問題が発生する可能性があります。

たとえば、これは有効な Razor コードですが (<div>タグのため):

@if(printHello) {
   <div>Hello!</div>
}

次のスニペットは無効です (Hello! がまだコードとして扱われているため)。

@if(printHello) {
   Hello!
}

ただし<text>、複数行ブロックの遷移を強制するために使用できる特別なタグがあります (<text>タグはレンダリングされません)。

@if(printHello) {
   <text>Hello!
   Another line</text>
}

を使用して単一行を強制的に遷移させる短い構文もあります@:

@if(printHello) {
   @:Hello!
}
于 2010-09-02T23:13:36.287 に答える
33

RazorEngineを確認してください。これは、これを可能にする Razor の上に構築された小さなフレームワークです。

于 2011-10-11T13:34:47.080 に答える
21

RazorTemplatesライブラリを見てください。RazorEngine ライブラリよりも軽量で、スレッドセーフであり、非常に優れた最小限のインターフェイスを備えています。

テンプレートのコンパイルとレンダリングは、次の 2 行のコードと同じくらい簡単です。

var template = Template.Compile("Hello @Model.Name!");
Console.WriteLine(template.Render(new { Name = "World" }));
于 2012-11-20T11:26:14.650 に答える
9

RazorEngineRazorTemplatesの両方がすでにここで言及されていますが、 RazorMachineをチェックしてください。非MVCアプリを(別の)既存のMVCアプリの〜/ Viewsフォルダーにポイントし、適切なモデルを送信して実行し、2行のコードでレンダリングされた出力を取得するだけです。

var sb = new StringBuilder();

//RazorMachine magic:
//*tweets* is basically List<TwitterPost> - simple collection of custom POCO
//first param for rm.ExecuteUrl points to ~/Views folder, MVC style
var rm = new RazorMachine(htmlEncode: false);
ITemplate template = rm.ExecuteUrl("~/twitter/twitter", tweets);

//do whatever you want with result
sb.Append(template);
于 2012-11-28T16:07:54.793 に答える
3

コードまたはテキストを生成する:T4テンプレートのような意味です:http://msdn.microsoft.com/en-us/library/bb126445.aspxまたはcodesmithツール?

于 2010-09-02T16:19:50.937 に答える