Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/30.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
ASP.NET MVP-利用用户控件_Asp.net_Design Patterns_Mvp - Fatal编程技术网

ASP.NET MVP-利用用户控件

ASP.NET MVP-利用用户控件,asp.net,design-patterns,mvp,Asp.net,Design Patterns,Mvp,我正在用ASP.NET MVP(尝试监控控制器)和单元测试(迟做总比不做好!)编写我的第一个应用程序,我遇到了一个进退两难的问题。我已经编写了3个用户控件,都经过测试和接口,演示者在一起。现在,我来到一个包含这三个用户控件的页面,遇到了以下问题: 用户控件1是DateSelector,它是一个日历控件,带有两个其他按钮/列表。没有什么真正令人兴奋的 用户控件2是DailyList。猜猜是什么。无论如何,您可以选择/删除等。。如果从gridview中选择项目,则需要填充用户控件3 用户控件3是It

我正在用ASP.NET MVP(尝试监控控制器)和单元测试(迟做总比不做好!)编写我的第一个应用程序,我遇到了一个进退两难的问题。我已经编写了3个用户控件,都经过测试和接口,演示者在一起。现在,我来到一个包含这三个用户控件的页面,遇到了以下问题:

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

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

用户控件3是ItemDetail。这里是下拉列表、文本框等。。。某些选项与其他选项之间存在依赖关系(在下拉列表1中选择选项会影响下拉列表2中的选项)

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


到目前为止,我读到的所有东西都说,“MVP很好,即使有用户控件”,但是当涉及到示例时,用户控件的使用很容易被忘记。在我看来,MVC更符合我在这一点上的思维模式,但目前,MVC不是一种选择。这里有什么帮助都好。提前感谢。

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


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

感谢您的澄清。我想我真正的问题是在哪里定义DateSelector的事件。因为我需要从页面访问事件,所以它必须在视图中声明(但可以从演示者处引发)。仅供参考,你的博客文章对我的入门有很大帮助。谢谢