ASP.NET MVC 3の このブログ投稿 onRazor Templatingを読みました。
簡単に言えば、私はそれを取得しません!
つまり、@RenderPartial
を使用してIMOをより簡単に(そしてよりきれいに)実行できることを実現するために、この(かなり)複雑なコードが必要な理由がわかりません。
これが私が好きではないものです:
Func<T,HelperResult>
デリゲートとして保存されますか?そのブログから私が読んだ唯一の「利点」は、テンプレートを作成するために別のファイルが必要ないことです。つまり、再コンパイルなどする必要がありません。
しかし、私はそれを有効な議論とは見ていません。ソリューションの編成が危険にさらされない限り、追加のファイルは問題ありません。
マークアップをマスタービューから分離しておくことができ、これをインライン(レンダリング時間)とjQuery(例:AJAXイベント)の両方でレンダリングできるため、@RenderPartial
を使用することを好みます。
ここで何かが足りないかもしれませんが、再利用可能なコンテンツを作成するためにRenderPartialではなくRazorテンプレートを選択する必要がある理由を誰かに教えてもらえますか?
さて、あなたはその投稿の作者にこのテクニックを提示する動機について尋ねるべきです。
それは確かにRazorで何が可能かを示しています。あなたがそれを使うべきかどうかは別の問題です。個人的には、それほど複雑ではない代替手法があると思います(リクエストコンテキスト内にFunc
を格納することについてのあなたの意見に同意します)。
@RenderPartial
があります。@helper
構文を使用することもできます(ローカルヘルパーまたはグローバルヘルパーとして)TagBuilder
を使用して出力を組み立てます)上記のリストを見ると、MVCでは選択肢が多すぎると思います:)
Updateインラインテンプレートがどのように役立つかをよりよく説明するために、デフォルトコードでセクションを呼び出すためにそれらを使用することについてのブログ投稿を書きました: オプションのレイザーセクションデフォルトのコンテンツを使用 。
これを使用して、次のようなものを書くことができます。
@this.RenderSection("OptionalSection", @<div>Default Content</div>)
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 -アプリケーション
注:あなたが指摘したリンクがこれを示していると言っているのではなく、@にリストされている方法を超えたい理由の単なる例ですマーシンドの答え。