我目前在玩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