35

ASP.NET MVC サイトのサンプルを見ると、ビューにロジックが埋め込まれている例がかなり多く見られます。

<% if (customerIsAllowed)
   { %>

   <p>nnn</p>
   <p>nnn</p>
   <p>nnn</p>
   <p>nnn</p>
   <p>nnn</p>

<% }  else {%>

   <p>nnn</p>
   <p>nnn</p>
   <p>nnn</p>
   <p>nnn</p>
   <p>nnn</p>

<% } %>

これは、ASP 3.0 で回避しようとしていた種類のものであるため、私には間違っているように思えますが、一部のポッドキャストで、MVC フレームワークの残りの部分から「少しのロジックが表示されていれば問題ない」と聞いたことさえあります。 ASP 3.0 になかった構造を処理しています。

ビューで許可されるロジックの種類と量を指定する MVC 規則はありますか?

4

5 に答える 5

41

それは論理の理由に依存します。ロジックが、コントローラーから渡されたプロパティに基づいて代替プレゼンテーションを選択している場合は、おそらく問題ありません。これにより、ビューを再利用できます。カスタム特権ごとにビュー全体を再作成(および繰り返し)する代わりに、この特権に基づいてビューをカスタマイズできるデータを渡すことができます。

これは、理想化されたMVCとDRYの厳密な実施との間の実用的なバランスだと思います(繰り返さないでください)。状況によっては、両方を簡単に達成できない場合は、どちらか一方に違反する方が賢明です。モデルと基本ビューが明らかに同じである場合、ビューをDRYに保つために、ビューに少しロジックを配置するのが妥当です。

于 2009-01-14T14:46:32.683 に答える
3

ロジックがビューの形式に関連しており、エンティティやデータが変更されない場合は、ビューで問題ないと思います。

于 2009-01-15T03:00:11.250 に答える
2

42.

冗談だ :-)

これに対する決まった答えはありませんが、関心を適切に分離することが一般的に受け入れられているベスト プラクティスです。これに関する議論はかなり終わりがありません。特定のプロジェクトで正しい方法を知るには、経験が必要であり、「コードの匂い」や正しくないと感じることに気付くことができると思います。

于 2009-01-15T03:04:00.040 に答える
1

ビュー内のロジックがプレゼンテーション用である限り (マークアップ ファイルで気に入らない場合は、コード ビハインド ファイルに入れることができます)、問題ありません。あなたの例では、コード/ロジックは、問題のない特定のビュー部分を選択するためのものです。プレゼンテーションにはロジックを含めることができ、単純な HTML である必要はありません。

于 2009-01-15T09:22:37.267 に答える
1

ここで、別の方法を考えてみましょう。プレゼンテーション ロジックはビューに入ります。ビジネス処理ロジックはコントローラーに入り、データ検証はモデルに入ります。しかし、どこに行くかは、最終的にはガイダンスであり、宗教ではありません:)

于 2009-01-14T15:17:49.653 に答える