我目前在玩Asp.Net mvc框架,并且喜欢它与经典的asp.net方式相比。我正在模拟的一件事是View是否可以接受导致(间接)访问数据库?ASP.Net Mvc - 视图可以调用可能导致数据检索的函数吗?
例如,我使用控制器来填充一个自定义数据类,其中包含我认为View需要完成其工作的所有信息,但是由于我将对象传递给视图,因此它也会导致数据库读取。
一个快速的伪示例。
public interface IProduct
{
/* Some Members */
/* Some Methods */
decimal GetDiscount();
}
public class Product : IProduct
{
public decimal GetDiscount(){ ... /* causes database access */ }
}
如果视图访问产品类(它被传递一个IProduct对象),它可以调用GetDiscount()而引起的数据库访问。
我在想办法来防止这种情况。目前我只为Product
类提供多种接口继承。现在不用实施IProduct,而是实施IProduct
和。 IProductView将列出类的成员,IProduct将包含可能导致数据库访问的方法调用。
“查看”将只了解接口到类,并不能称之为造成数据访问方法。
我对“锁定”它被传递到前视图的对象等模糊的想法,但我可以预见的副作用这样的方法巨大范围。
所以,我的问题:
- 是否有关于这个问题的最佳做法?
- 使用MVC的其他人如何阻止视图变得淘气并且对对象做的事情比他们应该做的更多?
我想向视图提供已准备好的烘焙数据,那就是我在控制器中所做的事情(我使用构建器创建视图模型类),我(可能过早地)想要迎合将来可能需要的情境在交易中的所有数据库访问 - 例如 - 在视图中不容易控制! – Ash 2009-01-06 00:25:59