15

ASP.Net MVC のビュー エンジンに関して、また「デフォルト」の代わりに「カスタム」エンジンを使用することについて、SO に関する質問が非常に多くあります。趣味のプログラマーである私にとって、「View Engine」という用語は初めてで、その意味を理解できていませんでした。だから、私の質問は次のとおりです。

  1. ビューエンジンとは?

  2. View Engine は何をし、MVC パターンでどのような役割を果たしますか? (1と密接に関係しています...)

  3. プログラマーが別のビュー エンジンに切り替えることによって変更/回避したいデフォルトのビュー エンジンの主な特徴/プロパティは何ですか?

  4. 開発者が標準以外のビュー エンジンを使用することを選択した場合、他の一般的なビュー エンジンの主な利点は何ですか? (「Spark View Engine」という名前を何度も目にしましたが、他にもあるはずです)。

  5. いつ (どのようなシナリオで) 独自の View Engine を開発する必要がありますか?

では、(とりあえず)聞きたいのはそれだけだと思います。View Engines 101をくれ!=)

4

2 に答える 2

6

「ビュー エンジン」は、ビューを html、xml、または生成するために作成されたコンテンツ タイプにレンダリングします。「MVC」内では、ビュー (V) の側面になります。

ビューエンジンが異なれば、レンダリングを管理するための構文なども異なります。別のビュー エンジンを使用するという決定は、おそらくプロジェクト/プログラマ固有のものです。場合によっては、デフォルトのビュー エンジンの実際の制限または認識された制限に気付くことがあります。それ以外の場合は、単に別の設計目標または焦点である可能性があります。

Spark に関する限り、既定のビュー エンジンよりもはるかに簡潔にすることと、ASP.NET スクリプト ブロックに落とし込むのではなく、可能な限り HTML に似た構文を維持することに重点が置かれています。

エンド ユーザーとして、独自のビュー エンジンを作成したいと思うのはおそらく決してないでしょう。;) これは簡単にできる作業ではありません。おそらく、既存のビュー エンジンに既に存在する機能を再実装することになるでしょう。

編集

わかった。View.aspx ファイルは View Engine の一部ですか、それとも View Engine は、レンダリングする必要がある View.aspx (または他の種類の応答) を選択するのに役立つ一連のクラスですか? それはどのように機能しますか?

MVC パターンは、モデル、ビュー、およびコントローラーが別個の「もの」になることを示しています。ASP.NET MVC では、既定のビュー エンジンは、マスター ページ、ASPX ファイルなどを含む既存の ASP.NET フレームワークを使用します。Spark は同様のことを行いますが、別のエンジンであるため、まったく同じようには機能しません。したがって、一般的な意味では、ビュー ファイルはエンジン固有ではありませんが、特定のファイル、ディスク上のレイアウト、およびそれらのコンテンツビュー エンジン固有です。

于 2009-05-12T15:07:53.557 に答える
1

ビューエンジン(Sparkなど)を完全に置き換えるだけでなく、デフォルトのビューエンジンの動作にわずかな変更を加えるために、独自のビューエンジンを作成することもできます。これを行うには、デフォルトのエンジンを継承し、一部の動作をオーバーライドする新しいビューエンジンを作成します。

一般的な例の1つは、ビューエンジンがハードドライブで.aspxファイルを探す場所を微調整することです。たとえば、ユーザーがモバイルデバイスを使用しているかどうかに基づいて、使用するview.aspxファイルを自動的に切り替えるビューエンジンを作成できます。

これの非常に優れた実装例については、ASP.NETMVCを使用するモバイルWebサイトとモバイルブラウザー定義ファイルを参照してください。

アップデート:

スコットは、上記でリンクされた最初の実装と比較して重要な改善が行われた、更新されたViewEngine実装を投稿しました。

于 2009-05-12T15:12:38.310 に答える