私は最近、C#(ASP.NET Webアプリケーションではなく、デスクトッププログラム)でMVCパターンを使用して注文書プログラムを作成しています。今問題は、UIには、別のセクションにリンクするたくさんのボタンがあります。注文ページから、クリックして在庫ページに行くことができます。もちろん、各セクションには独自のMVCセットがあります。パターンビューを複数のコントローラに接続するには?
抽象化を維持しながらボタンを他のコントローラに接続するにはどうすればよいですか?つまり、各ビューは、他のコントローラーの仕組みや、作業に必要なパラメーターを理解する必要はありません。
が頭に浮かぶデザインの可能性がいくつかありますが、私は1つがある見当がつかないより良い/単純:
汚い方法:ちょうど1つのビューで、必要なすべてのコントローラへの参照を置きますこの方法で抽象度が低下します。
共有ビュースペース:各ボタンは独自のコントローラーを持つ別のビューですが、次にいくつかの種類のビューマネージャーが必要です。
ルーティング:ほぼASPに似ています。 NET RedirectToActionを使用して、一般的なタイプ(文字列など)を使用して、実行するコントローラとアクションを決定するカスタムルータを作成する。
各アクションのカスタムボタン:コントローラごととアクションごとにボタンクラスを作成する。次に、ビューが必要なパラメータを各ボタンに供給するための方法が必要です。
私は何をすべきですか?
なぜあなたのビューはコントローラを参照する必要がありますか?あなたのビューがイベントを送出したばかりの場合、コントローラまたはコントローラはすべてリスンして応答することができます。 –
そのイベントにどのように登録しますか? InventoryButton.Clicked + = InventoryControl.ShowList(Inventory Model)参照を知らずにInventoryControl.ShowListをどうやって与えるのですか?これはコントローラ内またはOrderView.InventoryButton.Clicked + = ShowList(InventoryModel)双方向ビューとコントローラがお互いを知っていなければならない –
コントローラは、通常、ビューに依存して、建設または他の適切なイベントのイベントを登録します。 –