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和cshtml
MVC(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 mvc
Asp.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便于SEO
6)生成的HTML頁面更加簡單和清晰,因為沒有了ViewState.
7)默認就對JS框架的支持
?
ASP.NET WebForms優點:
1)為HTTP提供了一種事件模型,對任何開發人員都可以很容易上手。
2)提供了大量的標準控件和第三方控件使得開發更加簡單易行。
3)由于使用了ViewState機制使得狀態管理變得簡單。
那么我們開發時該怎么對二者進行選擇呢?
| ? | TDD | Control HTML | Data-Driver | Like Winforms | RAD |
| MVC | 是 | 是 | 否 | 否 | 否 |
| 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里面依然是默認的起始頁
publicstaticvoid RegisterRoutes(RouteCollection routes){
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
"Default", // 路由名稱
"{controller}/{action}/{id}", // 帶有參數的 URL
new { 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();
}
?
修改為
?
publicstring Index(){
return"Hello World";
}
?
運行之后 一個簡單的界面就出現了 。。。
?
?
?
原文地址:http://www.cnblogs.com/lukun/archive/2011/07/20/2111879.html
轉載于:https://www.cnblogs.com/xust/articles/2603950.html
總結
以上是生活随笔為你收集整理的MVC的概念及MVC 3.0开发环境的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: CSS 颜色代码
- 下一篇: JDK内置工具--jconsole