開篇引言
說起ASP.NET MVC,我想作為WebForms開發者第一點要問的是:為什么要使用它?我的理解是:MVC是更細節化的框架,“細節可控”意味着你的系統更精致。具體體現在應用上。MVC的出現,可能正是迎合Web開發越來越精致的需求。就我了解的一個大型投資管理電商平台,所用的架構就是ASP.NET MVC。MVC將來在系統應用的趨勢,很可能就是大型電子商務平台。當然,WebForms並不是被“拋棄”,在快速開發,控件復用上,WebForms依然走在前面。有時候,根據需要,我們可以在同一項目中,混合使用這兩種技術。
環境准備:Windows 7 sp1或以上操作系統 + IE10或以上瀏覽器 + Visual Studio 2013
Demo創建及目錄文件介紹
1. 打開VS2013,新建一個MVC5項目。
確定,選擇MVC模板。
默認生成的項目目錄結構如下
目錄文件說明:
目錄或文件 | 內容 |
App_Data | 存放數據文件 |
App_Start | 包含4個類文件,分別是綁定配置,過濾配置,路由配置,開始(驗證)配置。 |
Content | 包含3個CSS文件,注意除了site.css外,亮點是默認集成了在國外非常流行的、Twitter使用的Bootstrap CSS/HTML框架。 |
Controllers | 控制器,包含兩個類文件,分別表示兩個控制器。有關“控制器”更多信息請關注本系列后續文章。 |
fonts | 字體 |
Models | 兩個模型(實體)類 |
Scripts | js文件夾,包含bootstrap.js和jquery-1.10.2.js等。 |
Views | 視圖,即頁面文件夾。包含.cshtml文件。有關cshtml,后續會做詳細介紹。 |
Global.asax | 系統入口 |
packages.config | 重要,記錄系統中關鍵技術框架的版本信息。 |
MVC的運行原理
在多數的Web框架(asp,asp.net form,jsp,php,...)中,URL地址通常映射到磁盤上的具體物理文件,例如,/HelloWord/welcome.php 或 /HelloWod/welcome.aspx ,通常在磁盤上都有一個welcome.php或welcome.aspx文件與之相對應。當一個針對Web應用程序的http請求發送到服務器時,Web框架將請求的處理權交由請求的文件,通常這個文件通過使用HTML標記來生成發送到客戶端的回應內容。可以把此過程理解為“文件式請求”。
MVC怎么做的呢?
MVC框架使用另一種不同的方式將URL路徑直接映射到服務器端的代碼,也就是將URL直接映射到類而不是映射到物理文件。這些被映射到的類被稱為“控制器類”,他們可以處理服務器請求,處理用戶輸入和與用戶進行交互,執行應用邏輯和數據邏輯等。控制類將會調用一個獨立的“視圖”組件來產生針對請求的HTML輸出。可以把此過程理解為“控制器式請求”。
下面用一張圖解釋“控制器式請求”:
現在我們可以做個試驗,驗證下“控制器式請求”。在Controllers文件夾單擊鼠標右鍵,新建一個Controller
選擇MVC5控制器
我們將這個新建的Controller命名為HelloWorldController,並將默認代碼改為(很簡單,各位可以自己寫^_^):
然后重建項目。運行,在瀏覽器中,在站點地址(我這里是http://localhost:55952,你的端口可能會不同)后+/helloworld,效果如下:
同樣,在站點地址后+/helloworld/welcome,效果如下:
通過這個簡單的示例,我想你已理解並對“控制器式請求”有了初步印象。(第一個輸入地址,沒有加index方法名也能訪問,是因為index方法是默認入口。)
事實上,上面這個訪問規則能映射到相應的控制器類和類中的方法,是在App_Start文件夾下RouteConfig.cs文件中定義的。這個類只有一個方法
public static void RegisterRoutes(RouteCollection routes) { routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); routes.MapRoute( name: "Default", url: "{controller}/{action}/{id}", defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional } ); }
此方法定義了映射規則和可以忽略的路由(也叫可以忽略的訪問地址類型)。
有關URL映射的詳細內容,我們將在下一章做深入闡述。
總結
本章主要對ASP.NET MVC5 做一個入門級的介紹,並對MVC的運行原理做了初步探討和驗證。希望這會對還未接觸MVC的童鞋有幫助。本章作為系列開篇,也將對接下來的文章內容做一個系列探討。
另外,也不忘將先輩們的一句話送給大家:如果你對MVC不感興趣,沒關系的,這完全是一個“可選”項。要知道,MVC和WebForms是共存的。
最后,
如果您對MVC5感興趣,請持續關注。作者非常希望您能“推薦”一下,並祝工作順利。