服務熱線
153 8323 9821
隨著ASP.NET MVC 1.0版本的正式發布, 我將本系列文章也更新到了1.0, 對于已經發表的文章我都會根據1.0版本重新編輯. 希望本系列文章能打給大家幫助.
ASP.NET MVC是微軟官方提供的開源MVC框架. 在經過了漫長的preview和2個RC版本后, 終于發布了1.0版本.其實從RC開始ASP.NET MVC的核心代碼就已經趨于穩定.所以現在開始學習ASP.NET MVC是一個很好的時間點.學習的早,而且不用擔心知識過時.
本系列教程是我在學習ASP.NET MVC時的總結, 比如雖然我學習老趙的視頻教程, 但是因為版本較老, 一般我都要從最新版本上進行知識的校驗與升華, 然后將最后的精華總結出來寫成文字. 現在還在不斷的學習, 不斷地寫作.希望大家喜歡本系列文章, 我將用精益求精的精神寫本系列文章.
現在開始跟著我一步一步學習ASP.NET MVC.在什么都不知道之前, 還是讓我們先下載一個ASP.NET MVC程序. 當看到程序運行后, 我的心才會踏實很多.
首先去ASP.NET MVC的官網看看:
這里我們可以下載ASP.NET MVC的安裝文件.目前最新版本是1.0,另外我們可以在CodePlex上獲取源代碼:
http://www.codeplex.com/aspnet
在官網上下載ASP.NET MVC安裝文件, 一路回車完成安裝. 啟動VS2008 SP1(不是VS2008?不是SP1?作為一個專業的IT人士,水平可以菜,軟件咱一定要用新的!去找個新版本吧!),點擊新建,在Web中可以找到:
點擊確定即創建了一個默認的MVC項目.同時還會創建一個測試項目. 這些我現在都不懂也不關注, 直接將Web項目中的default.aspx設置為啟動頁, 運行項目, 一個ASP.NET MVC的項目已經運行在我的電腦上了:
而且那個Home和About還能點擊!雖然現在我什么都不懂, 不過看著能運行的實例, 心里就踏實多了!
一個ASP.NET頁面通常需要做這些事情:
MVC即Model, View, Controller
Model就是我們1中獲取的網頁需要的數據
Controller就是我們獲取數據,然后將數據綁定到頁面控件的這個業務流程.不十分正確但是可以先這樣理解: Controller就是我們的Page_Load方法邏輯.
View就是我們的aspx頁面,注意這是一個不包含后臺代碼文件的aspx頁面.(其實帶有.asp.cs文件也不會有編譯錯誤,但是這樣寫代碼就違背了MVC的設計初衷)
下面這張圖很好的概括了MVC的作用:
一個URL請求, ASP.NET MVC引擎會分析這個URL要使用那個Controller, 這個Controller(實際上真正的方法是Controller的Action)從數據庫或者其他數據源獲取數據,通常這些數據是一個業務的模型類(即MVC中的Model). Controller將Model對象傳遞給頁面(即MVC中的View), 頁面顯示在瀏覽器上.(這一步是ViewEngine的功能, 我們一般的ASPX頁面使用的是WebForm的ViewEngine,當然也可以替換.)
簡單的概念也有了.實例也能運行了.現在就是看看這個實例是如何使用ASP.NET MVC的.從首頁下手.
首頁網站的地址應該是 http://localhost:1847/home/index (1847是端口號,隨機生成,所以會不同), 為什么地址不是具體的頁面但是最后卻將請求提交給了view/home/Index.aspx 頁面? 很明顯是使用了URL重寫. ASP.NET中叫做UrlRouting,對應的程序集是System.Web.Routing, 打開項目的Global.asax.cs文件, 會找到我們建立的頁面重寫規則:
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = "" } // Parameter defaults
);
}
protected void Application_Start()
{
RegisterRoutes(RouteTable.Routes);
}
關于Routing的深入了解將在以后介紹, 這里我們完全可以照葫蘆畫瓢, 按照實例添加新的重寫規則.
最后, http://localhost:1847/home/index 就被解析為:
Controller為Home, Action為Index, 沒有id參數.
在Controllers文件夾下我們可以找到HomeController.cs, 這里使用了一個約定, 就是如果URL中獲取到的Controller名字是Home, 則他的Controller類名就是HomeController. 在URL中的名字后加上”Controller”.
實例中Controller都放在Controllers文件夾, 所以我們可以按照命名約定很容易就可以找到HomeController類
打開HomeControllers.cs, 發現里面有兩個方法:
public ActionResult Index()
{
ViewData["Message"] = "Welcome to ASP.NET MVC!";
return View();
}
public ActionResult A