表示层中的控件修改

本文关键字:修改 控件 表示层 | 更新日期: 2023-09-27 18:16:24

我正在使用GridView和数据绑定发生在演示器层,但单元格1例如必须被修改并转换为HyperLink控件,然后我必须调用演示器层中的RowDataBound事件并在该事件中进行修改。这对MVP来说没问题吗?

表示层中的控件修改

我通常会在视图级别进行数据绑定和事件处理。通过在演示器中执行此操作,您将在演示器和视图之间创建您想要避免的依赖关系。我不确定你会如何单元测试一个演示器方法,在GridView上调用.DataBind()

我要做的(我认为是标准的)是在你的视图类的代码后面添加一个属性,代表GridView的数据。比如GridView显示雇员,属性可以是

public List<Employee> Employees 
{ 
    get { return (List<Employee>)GridView1.DataSource; }
    set // The Presenter calls this
    {
        GridView1.DataSource = value;
        GridView1.DataBind();
    }
}

演示者只需要设置这个属性,然后你就可以做数据绑定和事件处理,就像你在webforms中做的那样。

如果你愿意的话,这也允许你对你的Presenter进行单元测试。假设你的视图实现了一个接口,你可以为你的单元测试使用不同的实现,即setter不会调用.DataBind(),它可能只是一个自动属性。你可以创建一个模拟视图,把它传递给演示器,然后测试你的属性是否为null,或者类似的东西。