DNN 模块MVP 模式学习中的一些问题
为了让View部分可以测试,我们使用interface来分离View和业务逻辑的耦合。
我的问题是:
Q:对于在aspx.design.cs中声明的控件,我们也需要在interface中声明吗?如果要声明,那么在aspx.design.cs中的控件声明是不是就是interface的实现?
我们不能在interface直接声明跟aspx.design.cs控件同名的变量,我们应该认为aspx.design.cs中的控件就是view的一部分,我们无法控制。我们能做的是在interface中声明一个跟控件同类型的变量,然后在presenter中初始化这个变量,再把这个变量赋值给控件。我们也可以声明一些给控件属性赋值的变量在interface里面,比如如果我们需要给一个DataGrid提供一个List作为数据源,我们只需要在interface中声明一个List,然后在aspx.cs中实现就可以了。