1. ホーム
  2. asp.net

[解決済み] Razor View Engine を asp.net の外部で使用することは可能ですか?

2022-12-10 17:01:43

質問

Razor View Engine を見ると、非常に素晴らしく簡潔な構文で、特に html を生成することに縛られていないことがわかります。 そこで、たとえばテキストやコードなどを生成するために、asp.net の外部の通常の .net 環境でこのエンジンを使用することは、どれくらい簡単なことなのでしょうか。

どんなポインタ、例、コメントまたは説明でも歓迎します。

どのように解決するのですか?

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

  1. はい、Andrew のブログで説明されているように、Razor View Engine を ASP.NET アプリ ドメインのコンテキスト外で実行することができます。 http://vibrantcode.com/blog/2010/11/16/hosting-razor-outside-of-aspnet-revised-for-mvc3-rc.html
  2. しかし、Razor はまだ xml ライクなマークアップ (例えば HTML) の生成に主眼を置いており、Razor のパーサはその意味で <tags> の存在を利用して、コードとマークアップの間の移行を決定しています。おそらくどんなテキストでも生成するために使うことができますが、出力があなたの意図するものについての Razor の仮定と一致しないときに問題にぶつかるかもしれません。

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

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

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

@if(printHello) {
   Hello!
}

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

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

また、1行を強制的に遷移させる短い構文もあります。 @: :

@if(printHello) {
   @:Hello!
}