2
0
ASP.Net MVCのどの機能が、Webformでイベントを使用して疎結合コンポーネントをサポートする方法を置き換えることができますか?
たとえば、Webformsで簡単なページャーコントロールを使用します。
ページ番号をクリックします
ページャーは、新しいページ番号で「PageChange」イベントを開始します
この購読ページ/コントロールはイベントを受け取り、処理します 新しいデータを取得してバインドするための呼び出しを開始します。
同様にサポートするためにASP.Net MVCで使用できるツール
ルーズカップリング
コンポーネントの再利用性
単一のページ/ビューのロジックの分離(このような非常に複雑な 「ポータル」タイプのページ)。
2 Answer
1
ASP.NET MVCおよび一般的なModel-View-Controllerは、アプリケーションをサポートするデータとコードを、ユーザーに表示される視覚的な「プレゼンテーション層」マークアップから分離することで、懸念の疎結合と分離をサポートします。
適切に設計されたMVCのコントローラーとビューは、エンティティの編集ビューを変更せずに関連するビューに「埋め込む」ことができるように再利用できます。
たとえば、OrdersビューにはOrdersDetail部分ビューが含まれる場合があります。 この部分ビューは、アプリケーション内の他の場所でも利用可能なOrderDetail編集ビューに置き換えることができます。
モデルをビューから分離すると、プレゼンテーションレイヤーのコンテキストからコードを分割することで、ユニットテストがより効果的になり、煩雑さが軽減されます。 System.Webを参照して、データベースからデータを取得する単体テストコードを参照する必要はありません。
0
MVCはイベントを廃止します。ほとんどのイベントは、クライアントがサーバーに実行を指示しようとしていることと、サーバーが実際に実行しようとしていることとの間の不要なレイヤーに過ぎないからです。
Webフォームのページングの例では、クライアントがボタンをクリックし、ブラウザーがイベント/ビューステートを送信し、エンジンがButtonClickedイベントを発生させます。 イベントを調べ、クライアントがページングするつもりであると判断し、ページングロジックを実行します。
MVCパラダイムでは、ユーザーはページングロジックを実行するコードに直接リクエストを行うボタンをクリックします。 ボタンを配置するときにボタンが呼び出すアクションを知っているので、なぜイベント発生のすべての陰謀を経験するのですか? コントローラーでは、コマンドを受け取ったときにイベントを発生させることができますが、そうするためのユースケースを正直に想像することはできません。
どちらの方法も同じことを実現しますが、MVCは複雑さのレイヤーを削除するだけです。