9

我正在使用 ASP.NET MVP(尝试监督控制器)和单元测试(迟到总比没有好!)编写我的第一个应用程序,我遇到了一些困境。我已经编写了 3 个用户控件,全部经过测试和接口,演示者在拖。现在我来到一个采用这三个用户控件的页面并遇到以下问题:

用户控件 1 是 DateSelector,它是带有几个其他按钮/列表的日历控件。没有什么真正令人兴奋的。

用户控件 2 是 DailyList。猜猜它是什么。无论如何,您可以选择/删除等。如果您从网格视图中选择一个项目,它需要填充用户控件 3。

用户控件 3 是 ItemDetail。下面是 DropDownLists、TextBoxes 等......有些与其他人存在依赖关系(在 DropDown 中选择一个选项会影响 DropDown 2 中的选项)。

如果我从我的 DateSelector 中选择一个新日期,我是否会从 DateSelector Presenter 中引发事件?我必须以某种方式让其他用户控件知道选择了一个新日期,以便他们可以重新绑定他们的数据,但是如何?如果我使用页面的 Presenter 来订阅用户控制视图的 Presenter,我会不会公然违反 Demeter 法则(通过他们的 View 将 Presenter 暴露为属性)?我不是必须将页面的 Presenter 用作页面的全知控制器吗?有什么我想念的吗?

到目前为止我读到的所有内容都说,“MVP 很棒,即使使用用户控件也是如此”,但是当涉及到示例时,用户控件的使用很容易被遗忘。在我看来,MVC 会更符合我对此的思考模式,但目前,MVC 不是一种选择。任何帮助在这里都会很棒。提前致谢。

4

1 回答 1

4

Page Presenter 必须是协调页面上控件之间交互的人。还有谁会这样做?我会让页面演示者监听 DateSelector 用户控件的事件。从页面演示者的角度来看,它可能不需要知道谁引发了事件(视图或演示者),因为它将 DateSelector 视为一个完全封装的控件。内部工作应该对页面的演示者隐藏。

它只知道 DateSelector 用户控件引发了一个事件,现在它需要通过引发自己的事件或通过显式调用演示者上的方法来通知页面上的其他控件。

于 2008-12-04T06:08:24.223 回答