ASP.NET MVC框架是個你可以用來結構化你的ASP.NET web應用,使之擁有清晰的關注分離,方便你單元測試代碼和支持TDD流程的可選方法 。
我將討論控制器是如何與視圖做交互的,具體來說,我將討論你可以把數據從控制器傳到視圖以顯示返回到客戶端的回復的各種方式。
第一部分的扼要簡述
在這個系列的第一部分,我們創建了一個電子商務網站,實現了基本的產品列表/浏覽支持。我們是用ASP.NET MVC框架實現這個網站的,這 個方法會很自然地將代碼結構化為獨特的控制器,模型和視圖組件。
當浏覽器向我們的網站發送一個HTTP請求時,ASP.NET MVC框架將使用它的URL路徑選擇引擎,把進來的請求映射到一個控制器上的action方 法來處理它。在基於MVC的應用中的控制器負責處理進來的請求,處理用戶輸入和交互,執行基於這些輸入和交互的應用邏輯(獲取或更新存儲 在數據庫中的模型數據等等)。
到生成返回到客戶端的HTML回復的時候,控制器一般是與“視圖”組件合作,這些視圖組件 是以獨立於控制器的單獨的類或模板的形式實現的,其目的是完全注重於封裝顯示邏輯。
視圖不應該含有任何應用邏輯或數據庫訪問代碼,所有的應 用/數據邏輯應該由控制器類來處理。這麼劃分的動機是幫助強制你的應用/數據邏輯與界面生成代碼間的清晰分離。同時這也方便你獨立於你 的界面顯示邏輯來單元測試你的應用/數據邏輯。
視圖應該只使用從控制器傳過來的特定於視圖的數據來生成輸出。在ASP.NET MVC框架 中,我們稱這個特定於視圖的數據為“ViewData”。這個博客的其他部分將討論你可以用來將ViewData從控制器傳遞給視圖來生成 顯示的一些不同方法。
一個簡單的產品列表場景
為幫助說明我們可以用來把ViewData從控制器傳遞給視圖的一些技術,讓我們來建 造一個簡單的產品列表網頁: