.NET MVC 實例教程(一)

原創作品,允許轉載,轉載時請務必以超鏈接形式標明文章 原始出處 、作者信息和本人聲明。否則將追究法律責任。
作者:永恆の_☆ 地址:http://blog.csdn.net/chenghui0317/article/details/9382781

一、什麼是.NET的 MVC模式

MVC(Model-View-Controller,模型—視圖—控制器模式)用於表示一種軟件架構模式。它把軟件系統分爲三個基本部分:模型(Model),視圖(View)和控制器(Controller)。

那麼MVC模式和我們熟悉的WebForm模式有什麼不同呢?他的各個部分又是怎樣分工的呢?

我們先來看一下普通的WebForm模式下,我們請求一個例如http://www.51mvc.com/blog/index.aspx的URL,那麼我們的WebForm程序會到網站根目錄下去尋找blog目錄下的index.aspx文件,然後由index.aspx頁面的CodeBehind文件(.CS文件)進行邏輯處理,其中或許也包括到數據庫去取出數據(其中的經過怎樣的BLL到DAL這裏就不談了),然後再由index.aspx頁面來呈現給用戶。

也就是一個URL請求的是在服務器與該URL對應路徑上的物理文件(ASPX文件或其他),然後由該文件來處理這個請求並返回結果給客戶端。

但是,對於MVC模式,這是怎樣的一個過程呢?

  1. 當第一個請求從客戶端發起的時候,首先執行的是Global.asax中的Application_Start()方法來完成一些初始化工作,其中重要的一步是RegisterRoutes方法,這個方法指定了如何將url映射到具體的方法上,稍後詳解。

  2. 根據第一步中指定的映射表生成一個RouteDate個對象,利用這個對象來創建一個RequestContext對象。

  3. MvcRouteHandler創建一個MvcHandler,並將RequestContext對象傳給MvcHandler。

  4. MvcHandler對象利用RequestContext對象確定一個IControllerFactory對象來創建Controller對象。

  5. MvcHandler對象調用Controller對象的Execute()方法。

  6. Controller的ControolerActionInvoker對象決定調用controller的哪個具體的action方法。

  7. Action方法接受用戶參數,執行方法,返回一個Result類型的對象。

二、.NET MVC 和JavaEE 的MVC 有相同點和不同點?

   MVC是一個設計模式,M(Model)指數、V (View) 視圖、C(Controller); 它跟你使用的語言無關,是一種設計模式,可以理解就是一種思想 一種套路。

優點:降低代碼的重複、降低維護帶來的複雜性,方便擴展、修改,對任務分工也會有好處。  低耦合性、高重用性和可適用性、較低的生命週期成本、快速的部署、可維護性、有利於軟件工程化管理;

不同點:JavaEE 的MVC 已經很成熟,運用很廣泛,這種思想已經運用於很多框架當中。

當用戶發送請求來之後,首先由核心控制器攔截,然後根據配置文件的配置去找到對應的控制處理器, 執行已經分配好的action方法,完了之後 返回一個邏輯路徑名稱,系統會根據這個邏輯名稱做出相應的跳轉。

但是.NET 的MVC 是 由UrlRoutingModule來把用戶發送的請求URL定位到Controller中去的。而對於URL會被路由到哪一個Controller中去,這些我們是完全可以自己定義的。在Global.asax可以看到Route規則的明細。然後會找到controller 以及裏面需要執行的action方法 ,之後返回View(), 最後回去View文件夾下找到對應的顯示頁面展示。

三、.NET MVC需要準備的條件 

VS2010以上版本。(我之前用VS2008 結果發現創建mvc的入口都沒有)

MVC3的安裝包,地址:http://download.csdn.net/detail/ch656409110/5783657

四、創建一個MVC項目的解決方案

安裝完成MVC3後,新建項目-->ASP.NET MVC3 Web Application,如下圖所示:


2、點擊"OK"後,出現如下圖所示:

選擇”Internet Apliication“ 這個,裏面有一個非常好的demo 可以看。

然後可以看到以MVC解決方案了:



在根目錄中

Content 裏面放的是css樣式;

Conntrollers裏面放的是控制器;

Models裏面放的是模型;

Scripts裏面放的是js腳本;

Views裏面放的是 對應的cshtml頁面;

Global.asax裏面 記錄的是核心的配置,以及註冊已經定義的route規則;


現在,可以按F5調試 運行看看了。








發佈了67 篇原創文章 · 獲贊 47 · 訪問量 77萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章