ASP.NET MVP (Supervisory Controller の試行) と単体テスト (決して遅いよりはましです!) を使用して最初のアプリを作成していますが、少しジレンマに陥りました。私は 3 つのユーザー コントロールを作成しました。これらはすべてテストされ、インターフェイスが設定されており、Presenter が牽引されています。これら 3 つのユーザー コントロールを使用するページにたどり着きましたが、次の問題が発生しました。
ユーザー コントロール 1 は DateSelector です。これは、他のいくつかのボタン/リストを備えたカレンダー コントロールです。本当にエキサイティングなことは何もありません。
ユーザー コントロール 2 は DailyList です。それが何であるかを推測してください。とにかく、選択/削除などを行うことができます。グリッドビューから項目を選択する場合は、ユーザー コントロール 3 を設定する必要があります。
ユーザー コントロール 3 は ItemDetail です。ここに、DropDownLists、TextBoxes などがあります... 他のものへの依存関係が存在するものもあります (DropDown one でオプションを選択すると、DropDown 2 のオプションに影響します)。
DateSelector から新しい Date を選択した場合、DateSelector Presenter からイベントを発生させますか? データを再バインドできるように、新しい日付が選択されたことを他のユーザー コントロールに知らせる必要がありますが、どうすればよいでしょうか。ページのプレゼンターを使用してユーザー コントロール ビューのプレゼンターをサブスクライブすると、デメテルの法則 (ビューを通じてプレゼンターをプロパティとして公開する) を露骨に破ることになりませんか? ページのプレゼンターをページのすべてを知っているコントローラーとして使用してはいけませんか? 足りないものはありますか?
私がこれまでに読んだものはすべて、「ユーザー コントロールを使用しても MVP は素晴らしい」と述べていますが、例となると、ユーザー コントロールの使用は都合よく忘れられています。MVC の方が、この考え方の私のパターンにより近いように思えますが、現在、MVC はオプションではありません。ここでどんな助けも素晴らしいでしょう。前もって感謝します。