ASP.NET MVC已經推出時間不短了,已經有很多項目在使用這個優秀的WEB開發架構。因為我們項目每次加人的時候,對MVC都不是特別熟悉,有一些人認為這個非常簡單,導致寫出來的程式完全不是MVC的,所以我就想寫個系列總結一下實戰中的經驗和一些學習的筆記。我們先不談論MVC的好處,等我們寫過一些程式和樣本後,再回來談。
首先,我們先用MVC寫一個簡單的ASP.NET MVC3的程式來簡單的瞭解一下。
環境:
VS2010
ASP.NET MVC3
在http://www.microsoft.com/web/downloads/platform.aspx 下載Microsoft Web Platform Installer 3.0,在Microsoft Web Platform Installer 3.0上可以線上下載到需要的軟體。
樣本程式
1. 顯示一個簡單的字串“Hello World”
建立ASP.NET MVC3 Web Application
選擇Razor視圖引擎
按F5啟動應用程式
我們看到出錯了,這是因為在MVC裡,請求被Controller處理,現在還沒有任何Controller,下面我們添加一個Controller, 右鍵Controller添加一個HomeController
修改HomeController裡的Index方法為如下
F5運行後如下所示
為什麼可以運行成功,這要歸功於ASP.NET MVC的路由機制,我們看一下Global.asax.cs裡的如下代碼
從這行代碼裡可以看到系統預設請求被路由到HomeController和Index這個Action(MVC裡把Controller裡公有方法稱之為Action,兩者之間是有區別的)。
2. 顯示一個視圖:
如果都像剛才那樣直接寫字串到用戶端,那開發人員肯定瘋了,現在我們顯示一個視圖。先把HomeController裡的Action改為如下代碼,按F5
namespace HelloWorld.Controllers{ public class HomeController : Controller { // // GET: /Home/ public ActionResult Index() { return View(); } }}
根據提示,我們在錯誤提示的任何一個位置添加對應的檔案就可以了,這裡我們在Views/Home檔案夾下添加Index.aspx, 在HomeController裡右鍵點擊Index方法名,選擇Add View
點擊確定,修改index.aspx為如下內容
F5運行,我們看到顯示和之前相同的結果
3. 添加動態內容
添加如下代碼
修改Index.aspx視圖為如下
F5運行
ViewBag是Controller定義的一個動態類型的屬性,意味著你可以給他添加任何屬性,在編譯時間動態類型的屬性是不檢查的。
4. 強型別視圖
動態類型編譯時間不能檢查,開發時沒有只能提示是意見很不爽的時,下面我們來定義一個強型別的視圖。先定義一個Person類
刪除Index.aspx, Ctrl+Shift+B 編譯一下,右鍵Action—>Add View
修改Index.aspx
我們可以看到強型別的智能提示
F5運行
我們可以看到產生的HTML和頁面
在Controller裡添加如下方法
提交表單顯示如下,
之所以能夠顯示出名字,是因為ASP.NET MVC通過Binder機制把表單Post的資料賦給參數對象對應的屬性,我們可以通過Firebug看一下表單Post的資料
5. 添加驗證
修改Person 這個Modal為如下,記得引用紅色標註的命名空間
視圖裡添加如下紅色標註的內容
修改Action裡的代碼如下
F5運行,不輸入任何代碼提交表單
至此,我們完成了一個簡單的MVC3的程式,裡面示範的MVC3的一些基本特性。
最後,打個小廣告:西安分公司急聘如下人員,有意者直接聯絡我,左邊側欄有我的連絡方式,部落格園招聘頻道有詳細描述 http://job.cnblogs.com/offer/13800/
基本要求:
4年以上C#開發經驗, .Net基礎紮實,熟練使用.Net3.5新特性。
精通ASP.NET Web開發。
熟練使用WCF.
熟練使用ORM,LINQ TO SQL /Entity Framework或者NHibernate.
熟練使用JavaScript, JQuery.
熟悉Web標準,熟悉HTML&CSS.
熟悉SQL Server, 熟練掌握T-SQL,預存程序。
英語讀寫熟練,可以看懂英文需求,可以和客戶流暢的用英語文字溝通(MSN/Skype)
良好的編碼習慣。
熟悉下面任意一項優先:
熟悉敏捷開發人員優先
英語聽說熟練者優先
熟悉ASP.NET MVC者優先。
熟悉WPF者優先
熟悉Silverlight優先
有系統架構經驗者優先,有單元測試或者TDD經驗者優先。