我有一個基於MVC設計的Web應用程序。在MVC Web應用程序中,誰負責過濾大量對象,視圖或模型?
我有一個包含大量對象(論壇線程),我不能加載到內存中一次的數據庫。我現在想用不同的過濾器(有點像stackoverflow對按日期排序的問題,投票,標籤等)顯示(部分)這個集合。
我在哪裏實現過濾邏輯?在我看來,這必須進入應用程序的模型部分,因爲只有模型與數據庫交互(在我的實現中)。如果我將過濾作爲視圖的一部分,那麼視圖必須直接訪問數據庫以獲取過濾對象的列表,對吧?我想避免這種情況,因爲它將數據庫佈局暴露給視圖。但在同一時間,顯示相同數據的不同視圖應在應用程序的視圖部分實現的,因爲他們是 - 不同享有相同數據的。
那麼,如何解決這個問題?我是否創建了一個額外的模型,例如FilteredThreadsList,並記住要使用的過濾器,然後使用FilteredView顯示FilteredThreadsList吐出的線程列表?
還是我必須建立一個ThreadQueryier,使視圖查詢某一線程對象的數據庫,所以我可以在視圖中篩選邏輯不暴露後端數據庫?
將濾波器邏輯放置在控制器和模型之間。讓你的控制器調用一個ActionResult返回方法,該方法返回模型中的輕量級實體,然後再返回到你的視圖。 – CarneyCode 2011-03-06 09:08:29
你在談論** asp.net ** mvc嗎? – gideon 2011-03-06 09:33:45
不,不是asp.net mvc,我的問題是(或應該是)語言和框架不可知論的。事實上,由於各種原因,我根本沒有使用任何現有的mvc框架,我正在手動完成。 – JeSuisse 2011-03-06 11:17:25