ASP.NET MVP - 利用用户控件

标签 asp.net design-patterns mvp

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

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

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

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

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

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

最佳答案

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

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

关于ASP.NET MVP - 利用用户控件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/339005/

相关文章:

c# - 在我的 ASP.NET 应用程序中的什么地方注册 IMemoryCache?

javascript - 单击按钮时从代码隐藏调用 Javascript 函数

c# - 这种情况下使用什么模式(接口(interface)实现)

php - 使用嵌套依赖项和工厂类执行单元测试

c# - 应如何为 MVP WinForms 应用程序的主要演示者调用 Application.Run()?

model-view-controller - MVC 模式中的 Controller 和 MVP 模式中的演示者有什么区别?

javascript - 无法摆脱对禁用按钮的悬停效果

c# - 中继器内的中继器

Java:惰性初始化单例

java - 使用 MVP 显示对话框