我正在使用GridView并且数据绑定发生在Presenter层中,但是例如必须修改单元格1并将其转换为HyperLink控件然后我必须在Presenter层中调用RowDataBound事件并在该事件内进行修改。这对MVP来说还行吗?
答案 0 :(得分:1)
我通常会在View级别进行数据绑定和事件处理。通过在Presenter中执行此操作,您将在Presenter和要避免的视图之间创建依赖关系。我不确定如何对在GridView上调用.DataBind()
的Presenter方法进行单元测试。
我会做什么(以及我认为是标准的)是在视图类的代码隐藏中添加一个属性,它代表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()
,它可能只是一个自动属性。您可以创建一个模拟视图,将其传递给Presenter,然后测试您的属性是否为null,或者沿着这些行进行测试。