ASP.NET MVC3實戰系列(一):簡單示例
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
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
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經驗者優先。