我正在尝试使用webforms和SQL Server首次实现MVP设计模式。
我想使用Gridview来显示数据库中的数据。 但是,当我从Presenter设置Gridview的ControlSource时,它会使Default.aspx视图依赖于数据集。这似乎是错误的,因为如果我将SQL数据库交换为其他内容,则视图必须更改,因为GridView可能无法正常工作。
这样做是不好的做法,如果是这样,怎么可以避免呢?
我已添加笔记以帮助说明问题(请注意DefaultView和Dataset之间的红色箭头):
答案 0 :(得分:1)
我真的不明白为什么,拥有这样丰富的模型层,你会忽略它并将视图直接绑定到数据集。为什么在地球上你没有绑定到模型中公开的对象列表?
如果绑定到IEnumerable
, ASP.NET中的网格很好,对象列表很好。您甚至可以拥有一个瘦适配器,ObjectDataSource
控制网格检索的方式并更新数据以支持排序和分页。
所以,回答你的问题:
这样做是不好的做法,如果是这样,怎么可以避免呢?
对我而言,视图在封面下偷看太深,它实际上是窥探DAO实现的内部细节。您可以通过将视图耦合到模型成员而不是模型内部来避免它。虽然您的模型看起来像OOP(客户),但数据集听起来像是实现数据库访问的内部方式。
顺便说一句。我会考虑切换到像Entity Framework这样的ORM。它使实现对象模型比引入一组数据集更容易。