23

ASP.NET MVC 3でのRazor Templatingに関するこのブログ投稿を読みました。

簡単に言えば、私はそれを理解していません!

つまり、なぜこの (かなり) 複雑なコードが必要なのかがわかり@RenderPartialません。

ここに私が好きではないものがあります:

  1. テンプレートはFunc<T,HelperResult>デリゲートとして保存されますか?
  2. そのテンプレート デリゲートは、Controller ViewData (例: HttpContext.Current.Items) に永続化されます。

そのブログから読んだ唯一の「利点」は、テンプレート化に別のファイルが必要ないことです。つまり、再コンパイルする必要がないということです。

しかし、私はそれを有効な議論とは考えていません。ソリューションの構成が損なわれない限り、余分なファイルは問題ありません。

@RenderPartialマークアップをマスター ビューから分離しておくことができ、これをインライン (レンダリング時間) と jQuery (たとえば AJAX イベント) の両方でレンダリングできるので、私はを使用することを好みます。

ここで何かが足りないかもしれませんが、再利用可能なコンテンツを作成するために RenderPartial ではなく Razor Templating を選択する理由を誰か教えてください。

4

2 に答える 2

19

そうですね、その投稿の著者に、この手法を提示する動機について尋ねるべきです。

それは確かに Razor で何が可能かを示しています。使うかどうかは別問題です。個人的には、それほど複雑ではない代替手法があると思います(Funcリクエストコンテキストの内部に保存することについてのあなたの指摘に同意します)。

  • @RenderPartialあなたがすでに言及したものがあります。
  • 構文を使用することもでき@helperます (ローカル ヘルパーまたはグローバル ヘルパーとして)
  • HTMLヘルパーを書くことができます(そしてTagBuilder出力を組み立てるために使用します)
  • 子アクションを書くことができます
  • テンプレート化されたヘルパーを書くことができます

上記のリストを見ると、MVC は選択肢が多すぎると思います :)

更新インライン テンプレートがどのように役立つかをよりよく説明するために、それらを使用して既定のコードでセクションを呼び出す方法についてのブログ投稿を書きました: Optional Razor Sections with Default Content .

これを使用して、次のように書くことができます。

@this.RenderSection("OptionalSection", @<div>Default Content</div>) 
于 2010-12-08T04:59:32.187 に答える
3

Razorに関する一般的な誤解は、ASP.NetMVCフレームワークのコンテキスト外では使用できないというものです。これは最も一般的なシナリオですが、かみそりエンジンのパワーはそれを超えています。

コンソールアプリまたはライブラリでかみそりのテンプレートを定義できます。非常に単純化された例として、自動化されたHTMLメールをクライアントに送信するアプリを考えてみましょう。昔は、文字列の連結やXSLT変換などに頼っていました。いずれにせよ、マークアップを視覚的に確認することはできず、操作はメンテナンスの悪夢になります。

Razorテンプレートを使用すると、テンプレートをHTMLマークアップとして定義して、簡単に視覚化してテストすることができます。

この機能を示す優れた記事は次のとおりです。http ://www.west-wind.com/weblog/posts/2010/Dec/27/Hosting-the-Razor-Engine-for-Templating-in-NonWeb-Applications

注:あなたが指摘したリンクがこれを示していると言っているのではなく、@marcindの回答にリストされている方法を超えたい理由の単なる例です。

于 2011-07-26T02:04:36.490 に答える