「プレゼンテーションロジック」とは何ですか。


13

私のWebアプリケーションでは、作成および編集用のフォームを提供する必要があります。作成用と編集用のフォームにはわずかな違いがあるので、私の見解ではこのようなことを考えています。

<form>
// a lot of htnl goes here 
@if (editing)
{
  // some more fields shown in edit mode
}
@if(!editing)
{
 // some stuff shown in create mode
}

私はいつもif自分のビューにステートメントを入れないようにしましたが、今回はHTMLの大部分を2つの場所にコピーする以外のオプションは表示しません。これは適切な「プレゼンテーションロジック」であり、他のオプションはありますか?

回答:


17

プレゼンテーションロジックは、特定のビューに対してビジネスデータを正しい方法で表示するために必要なロジックと計算で構成されます。
複雑なグラフィカルビューの場合、これは非常に複雑な計算(たとえば、各パイスライスのサイズと円グラフのラベルの位置の計算)になりますが、主な特徴は、現在に関連する情報のみを計算することです表示し、ビジネスデータを変更しないこと。

編集/作成モードのフィールドの選択がプレゼンテーションロジックの適切な使用であるかどうかは議論の余地があります。一部は、カスタマイズの種類と量に依存します。
たとえば、違いが単なるタイトル変更である場合、または1つまたは2つのフィールドをいずれかのモードで読み取り専用として表示する場合、1つのビューを持ち、モードを動的に選択するのが正しい選択です。
一方、私の最初の反応は、実際には2つの異なるビューである必要があり、共通部分が3番目のファイルからインポートされることです(ビューにヘッダーとフッターが追加される頻度と同様)。


12

Razorビューで@ifステートメントを1つまたは2つ使用することは完全に合理的です。
彼らは@ifをRazorに追加しました-それは使用されることを意図しています。

コードは@ifに短縮できます:

@if (editing)
{
  // some more fields shown in edit mode
}
else
{
 // some stuff shown in create mode
}

別の方法は、3つのビューを使用することです。

  • 共通のHTMLを含む部分ビュー
  • ビューの作成(部分ビューを呼び出します)
  • 編集ビュー(部分ビューとも呼ばれます)

DisplayTemplatesとEditorTemplatesを確認できます。これらは、読み取り専用ビューと編集可能なビューを分割するのに適した方法です。

http://www.growingwiththeweb.com/2012/12/aspnet-mvc-display-and-editor-templates.html

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.