我正在使用ASP.NET MVP(尝试监控控制器)和单元测试编写我的第一个应用程序,我遇到了一个小问题。我已经编写了3个用户控件,所有的测试都通过了,并且已经有了Presenter。现在我遇到了一个页面,需要将这三个用户控件组合起来,但是遇到了以下问题:
用户控件1是DateSelector,它是一个日历控件,还带有几个其他的按钮/列表。没什么特别的。
用户控件2是DailyList,猜猜它是什么。无论如何,如果您从GridView中选择/删除等操作,它需要填充用户控件3。
用户控件3是ItemDetail。这里有下拉列表、文本框等等,一些控件之间存在依赖关系(选择DropDown中的选项会影响DropDown 2中的选项)。
如果我从DateSelector中选择一个新日期,我应该从DateSelector Presenter中引发事件吗?我必须以某种方式让其他用户控件知道已选择了新日期,以便它们可以重新绑定数据,但是如何做呢?如果我使用页面的Presenter来订阅用户控件视图的Presenters,那么我不会公然违反Demeter法则(通过视图将Presenters公开为属性)。难道我不必使用页面的Presenter作为页面的全知控制器吗?我是否遗漏了什么?
到目前为止,我读到的所有东西都说:“MVP很棒,即使使用用户控件也不例外”,但是当涉及到示例时,使用用户控件就被方便地忘记了。在这个问题上,MVC似乎更符合我的思维模式,但目前,MVC不是一个选项。希望能得到帮助。谢谢。
用户控件1是DateSelector,它是一个日历控件,还带有几个其他的按钮/列表。没什么特别的。
用户控件2是DailyList,猜猜它是什么。无论如何,如果您从GridView中选择/删除等操作,它需要填充用户控件3。
用户控件3是ItemDetail。这里有下拉列表、文本框等等,一些控件之间存在依赖关系(选择DropDown中的选项会影响DropDown 2中的选项)。
如果我从DateSelector中选择一个新日期,我应该从DateSelector Presenter中引发事件吗?我必须以某种方式让其他用户控件知道已选择了新日期,以便它们可以重新绑定数据,但是如何做呢?如果我使用页面的Presenter来订阅用户控件视图的Presenters,那么我不会公然违反Demeter法则(通过视图将Presenters公开为属性)。难道我不必使用页面的Presenter作为页面的全知控制器吗?我是否遗漏了什么?
到目前为止,我读到的所有东西都说:“MVP很棒,即使使用用户控件也不例外”,但是当涉及到示例时,使用用户控件就被方便地忘记了。在这个问题上,MVC似乎更符合我的思维模式,但目前,MVC不是一个选项。希望能得到帮助。谢谢。