MVC的概念及ASP.NET MVC 3.0開發環境

我要學ASP.NET MVC 3.0(二): MVC的概念及MVC 3.0開發環境摘要MVC即: Model(模型), View(視圖), Controller(控制器)Model:模型對象是實現應用程序數據域邏輯的應用程序部件。通常,模型對象會檢索模型狀態並將其存儲在資料庫中。例如,Product對象可能會從資料庫中檢索信息,操作該信息,然後將更新的信息寫回到 SQL Server 資料庫內的 Products 表中。在小型應用程序中,模型通常是概念上的分離,而不是實際分離。例如,如果應用程序僅讀取數據集並將其發送到視圖,則該應用程序沒有物理模型層和關聯的類。在這種情況下,數據集擔當模型對象的作用。Controller:控制器是處理用戶交互、使用模型並最終選擇要呈現的視圖來顯示 UI 的組件。在 MVC 應用程序中,視圖僅顯示信息;控制器則用於處理和響應用戶輸入和交互。例如,控制器處理查詢字元串值,並將這些值傳遞給模型,而模型可能會使用這些值來查詢資料庫。就是程序通過Controller從瀏覽器中接受命令,決定用它做什麼,並返反饋給用戶。即獲取數據,然後將數據綁定到頁面控制項的這個業務邏輯。View:視圖是顯示應用程序用戶界面 (UI) 的組件。通常,此 UI 是用模型數據創建的。Products 表的編輯視圖便是一個視圖示例,該視圖基於Product對象的當前狀態顯示文本框、下拉列表和複選框。就是我們的aspx頁面,注意這是一個不包含後台代碼文件的aspx頁面。在MVC3.0 View可以支持多視圖引擎。即aspx和cshtmlMVC(Model-View-Controller)在軟體工程中的一種設計模式.(他不僅僅是Asp.net Mvc,這只是他的一種實現)他的主要設計目標是把用戶介面和邏輯層進行分離(低耦合),這樣開發人員可以更好的關注邏輯層的設計和測試,使得整個程序有個清晰的架構。如圖展示了MVC的關係

MVC 模式可以幫助您創建使應用程序的不同方面(輸入邏輯、業務邏輯和 UI 邏輯)分離的應用程序,同時可在這些元素之間提供鬆散耦合。該模式指定每種邏輯在應用程序中應處的位置。UI 邏輯位於視圖中。輸入邏輯位於控制器中。業務邏輯位於模型中。在您生成應用程序時,通過使用這種分離方式,可以幫助您化繁為簡,因為它可以使您側重於一次實現應用程序的一個方面。例如,您可以側重於獨立於業務邏輯的視圖。MVC 應用程序的這三個主要組件之間的鬆散耦合也可促進並行開發。例如,一個開發人員可以從事視圖方面的工作,第二個開發人員可以從事控制器邏輯方面的工作,第三個開發人員可以側重於模型中的業務邏輯。Asp.net MVC與Asp.net WebForms比較和選擇聯繫:WinForm -> Asp -> Asp.net Web Form -> Asp.net mvcAsp.net Web Form繼承了WinForm的思想,是事件驅動的編程模型。實現事件驅動,組件模型和頁面回發給自己的應用是離不開的。Asp.net mvc是Url驅動的編程模型。是界面構建模式mvc在Asp.net的實現。Asp.net Mvc不是用來代替Asp.net WebForms,而是對web開發提供一種新的開發模式。你可以選擇適合自己或團隊開發的模式來進行開發。微軟開發ASP.NET MVC框架的是基於以下一些目標的:1)各層分工明確,可測試性(支持TDD)2)一個高擴展的插件式的架構3)更友好的URLS,易於優化SEO,同時對REST的支持。4)可以繼續使用原有的Asp.net的一些特徵。5)對HTML代碼的完全可控性。ASP.NET MVC優點:1)界面代碼和業務邏輯代碼完全的分離。Asp.net Web Form中,界面代碼和業務邏輯代碼是不完全的分離,只是通過代碼隱藏文件把兩者給分開了,UI與業務邏輯的捆綁依然在代碼隱藏文件中清晰可見。2)代碼的分離實現了低耦合。清晰的代碼,易於維護。3)簡單。相對Asp.net web Form,沒有了複雜的伺服器控制項(如GridView),沒有了事件驅動;取而代之的是html標籤(微軟鼓勵這樣做)、Url驅動。4)對HTML的可控性增強。5)更加友好的URL便於SEO6)生成的HTML頁面更加簡單和清晰,因為沒有了ViewState.7)默認就對JS框架的支持ASP.NET WebForms優點:1)為HTTP提供了一種事件模型,對任何開發人員都可以很容易上手。2)提供了大量的標準控制項和第三方控制項使得開發更加簡單易行。3)由於使用了ViewState機制使得狀態管理變得簡單。那麼我們開發時該怎麼對二者進行選擇呢?TDDControl HTMLData-DriverLike WinformsRADMVC是是否否否WebForms否否是是是ASP.NET MVC 框架具有以下功能:應用程序任務(輸入邏輯、業務邏輯和 UI 邏輯)的分離、可測試性和測試驅動的開發 (TDD)。MVC 框架中的所有核心協定都基於介面並且可使用 mock 對象進行測試,mock 對象是模仿應用程序中實際對象的行為的模擬對象。您可以對應用程序進行單元測試,而不必在 ASP.NET 進程中運行控制器,這使得單元測試既快速又靈活。您可以使用任何與 .NET Framework 兼容的單元測試框架。可擴展和可插入的框架。設計 ASP.NET MVC 框架的組件的目的是為了可以輕鬆地替換或自定義它們。您可以插入自己的視圖引擎、URL 路由策略、操作方法參數序列化以及其他組件。ASP.NET MVC 框架還支持使用依賴項注入 (DI) 和控制反轉 (IOC) 容器模型。DI 使您能夠將對象注入到類中,而不是依靠類來創建對象本身。IOC 指定某個對象是否需要其他對象,第一個對象應該從配置文件之類的外部源中獲取第二個對象。這樣,測試會更加輕鬆。廣泛支持 ASP.NET 路由,ASP.NET 路由是一個功能強大的 URL 映射組件,它允許您生成具有易於理解和可搜索的 URL 的應用程序。URL 未必包含文件擴展名,並且旨在支持非常適合搜索引擎優化 (SEO) 和具象狀態傳輸 (REST) 定址的 URL 命名模式。支持將現有 ASP.NET 頁面(.aspx 文件)、用戶控制項(.ascx 文件)和母版頁(.master 文件)標記文件中的標記用作視圖模板。您可以將諸如嵌套母版頁、內聯表達式(<%=%>)、聲明性伺服器控制項、模板、數據綁定、本地化等現有 ASP.NET 功能與 ASP.NET MVC 框架結合使用。支持現有 ASP.NET 功能。ASP.NET MVC 允許您使用一些功能,如 Forms 身份驗證和 Windows 身份驗證、URL 授權、成員資格和角色、輸出和數據緩存、會話和配置文件狀態管理、運行狀況監視、配置系統以及提供程序體系結構。前言了解了MVC的概念之後。我們學習MVC 3.0需要搭建環境可以登錄http://www.asp.net/mvc下載安裝

或者下載MVC 3.0的離線安裝包ASP.NET MVC 3 RTM

也可以安裝VS 2010SP1 進行離校安裝。

學習MVC 3.0項目模板安裝好MVC 3.0 後就可以創建MVC3.0項目了

選擇項目模板和視圖引擎

VS 2010 MVC 3.0解決方案默認基於Razor視圖引擎:

基於ASPX視圖引擎:

默認情況下,MVC 項目包括以下文件夾:App_Data,這是數據的物理存儲區。此文件夾的作用與它在使用 Web 窗體頁面的 ASP.NET 網站中的作用相同。Content,建議在此位置添加內容文件,如級聯樣式表文件、圖像等。通常,Content 文件夾用於存儲靜態文件。Controllers,建議在此位置存儲控制器。MVC 框架要求所有控制器的名稱均以「Controller」結尾,如 HomeController、LoginController 或 ProductController。Models,這是為表示 MVC Web 應用程序的應用程序模型的類提供的文件夾。此文件夾通常包括定義對象以及定義與數據存儲交互所用的邏輯的代碼。通常,實際模型對象將位於單獨的類庫中。但是,在創建新應用程序時,您可以將類放在此處,然後在開發周期中稍後的某個時刻將其移動到單獨的類庫中。Scripts,建議在此位置存儲支持應用程序的腳本文件。默認情況下,此文件夾包含 ASP.NET AJAX 基礎文件和 jQuery 庫。Views,建議在此位置存儲視圖。視圖使用 ViewPage (.aspx)、ViewUserControl (.ascx) 和 ViewMasterPage (.master) 文件,以及與呈現視圖相關的任何其他文件。在 Views 文件夾中,每個控制器都具有一個文件夾;該文件夾以控制器名稱前綴命名。例如,如果控制器名為HomeController,則 Views 文件夾包含名為 Home 的文件夾。默認情況下,當 ASP.NET MVC 框架載入視圖時,它將在 Views控制器名稱文件夾中尋找具有請求的視圖名稱的 ViewPage (.aspx) 文件。默認情況下,Views 文件夾中也有一個名為 Shared 的文件夾,但該文件夾不與任何控制器相對應。Shared 文件夾用於存儲在多個控制器之間共享的視圖。例如,您可以將 Web 應用程序的母版頁放在 Shared 文件夾中。除了使用前面列出的文件夾之外,MVC Web 應用程序還使用 Global.asax 文件中的代碼來設置全局 URL 路由默認值,並且使用 Web.config 文件來配置應用程序。運行項目效果

可以看出該模板已經集成了簡單許可權、模板及導航為一體的一個簡單的ASP.NET應用程序創建MVC 3.0空項目

可以看到MVC3.0的空項目裡面除了基本的布局頁面錯誤頁面及開始頁面其他都為空。這就需要我們在實際操作的時候根據需要來添加。如果直接運行項目就會報錯。。。。細心的你此時會發現,在Global.asax裡面依然是默認的起始頁public static void RegisterRoutes(RouteCollection routes){routes.IgnoreRoute("{resource}.axd/{*pathInfo}");routes.MapRoute("Default", // 路由名稱"{controller}/{action}/{id}", // 帶有參數的 URLnew { controller = "Home", action = "Index", id = UrlParameter.Optional } // 參數默認值);}複製代碼我們可以看到Controller文件夾是空的,沒有什麼關於Home的字眼????難怪報錯。。。其實這是MVC的路由規則找不到HomeController的Index方法而已。。關於路由請移步我要學ASP.NET MVC 3.0(三): 初識Url映射潛規則Routing此時你可以新建一個Controller命名為HomeController

添加完控制器後默認給出了起Index的方法。。。public ActionResult Index(){return View();}複製代碼我沒可以看到上面的代碼返回的是一個ActionResult類型的View,但是我們還沒有建立與其對應的視圖。。所以我們讓他輸出一個字元串到頁面。。。將代碼public ActionResult Index(){return View();}複製代碼修改為public string Index(){return "Hello World";}複製代碼運行之後 一個簡單的界面就出現了 。。。

總結說了這麼多,回頭一看全都是廢話,沒有一句實用的。不過沒關係,板磚會很猛的哦。。有了廢話才有了磚有了磚才會有進步!!!下節預告下節我們開始從路由Routing入手一步一步建立自己的MVC 3.0應用程序。請看我要學ASP.NET MVC 3.0(三): 初識Url映射潛規則Routing作者:記憶逝去的青春出處:http://www.cnblogs.com/lukun/本文版權歸作者和博客園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接,如有問題,可以通過http://www.cnblogs.com/lukun/聯繫我,非常感謝。
推薦閱讀:

打造windows下的開發環境
Mac搭建nginx+mysql+php-fpm環境?

TAG:環境 | .NET | ASP.NET | 概念 | 開發環境 |