MVC の古典的な説明のいくつかでは、モデルはオブザーバー パターンを介してビューに通知します。これは ASP.NET MVC では発生しないように思われるため、Model、View、および Controller 間の基本的な関係の 1 つが欠落しています。
これは事実ですか?もしそうなら、なぜですか?
MVC の古典的な説明のいくつかでは、モデルはオブザーバー パターンを介してビューに通知します。これは ASP.NET MVC では発生しないように思われるため、Model、View、および Controller 間の基本的な関係の 1 つが欠落しています。
これは事実ですか?もしそうなら、なぜですか?
ASP.NET MVC のビューはステートレスです。それらは非常に短時間存在し、その後クライアントに送信されます。
プロセスは次のようになります。
コントローラーにリクエストが届きます。
コントローラーはモデルを取得し、ビューをインスタンス化します (モデルを渡します)。
ビューがレンダリングされ、マークアップがクライアントに返されてから破棄されます。
したがって、ビューがクライアントに送信された後は存在しなくなるため、モデルの変更について通知するものは何もありません。
オブザーバーパターンは必要ありません。ビューの元の定義では、次のように述べています。
ビューはそのモデル(またはモデルパーツ)にアタッチされ、質問をすることでモデルからプレゼンテーションに必要なデータを取得します。
Webアプリのコンテキストでは、可能な唯一のビューはブラウザーによってレンダリングされたマークアップ(HTML / XML)です。したがって、ASP.NET MVCの場合と同様に、ビューコードには、ユーザーに情報を提供するためにアクセスできるモデルインスタンスが渡されます。