2.4 建立您的第一個應用
開啟Visual Studio 2010,選擇檔案,然後選擇建立項目,選擇左邊的VisualC#然後選擇ASP.NET MVC 3 Web Application.命名項目為“MvcMovie”,單擊“OK”。
在新彈出的 New ASP.NET MVC 3 Project視窗,選擇Internet Application.確保Use HTML5 markup並保留Razor作為預設的視圖引擎。
單擊“Ok”,Visual Studio 已經使用預設範本為您建立一個可以啟動並執行應用程式。這是一個簡單的“Hello World!”程式,它是您的一個好的開始。
開啟“調試”菜單,選擇“開始調試”
您也可以使用快速鍵F5開始調試。
Visual Studio啟動一個瀏覽器並開啟程式的首頁面。注意地址欄的顯示的是localhost而不是形如example.com。這是因為localhost總是指向您的本機電腦,在這種情況下它指向您剛才建立的應用程式。當Visual Studio啟動一個網路項目時,一個隨機的連接埠被web server使用。
如所示,這是隨機的數字是43246.當您運行程式時,您可能看到的是一個不同的連接埠。
2.5 添加一個控制器
MVC代表model-view-controller。MVC對開發應用程式來說,是一種很好的架構和便於維護的模式。基於MVC的程式包含:
控制器:負責處理外部請求,擷取模型資料,提取視圖模板(負責返回請求給用戶端);
模型:代表應用程式的資料並使用驗證邏輯去執行資料的商務規則 ;
視圖:用來動態產生HTML響應的一些模板檔案。
在這個教程裡將會包含所有上述概念並告訴您如何去使用他們去建立應用程式。
讓我們開始建立一個控制類。在方案總管中,右鍵Controller檔案夾並選擇添加Controller。
命名新的控制器為“HelloWorldController”。保留預設的模板為 Empty controller 。單擊Add。
注意:在方案總管中一個新的檔案已經被建立,名字為HelloWorldController.cs.檔案已經在IDE中開啟。
在程式塊public class HelloWorldController的內部,建立兩個方法,代碼如下。作為例子,控制器將返回一個HTML字串。
using System.Web;using System.Web.Mvc;namespace MvcMovie.Controllers{ public class HelloWorldController : Controller { // // GET: /HelloWorld/ public string Index() { return "This is my <b>default</b> action..."; } // // GET: /HelloWorld/Welcome/ public string Welcome() { return "This is the Welcome action method..."; } }}
您的控制器被命名為HelloWorldController並且第一個方法被命名為Index。讓我們從瀏覽器調用它。運行應用程式(按F5或Ctrl+F5)。在瀏覽器中地址中追加"HelloWorld"。(例如:在下面的插圖中,這樣寫http://localhost:43246/HelloWorld.)
瀏覽器頁面中返回結果如下邊螢幕。上面的方法中,代碼直接放回了字串。您告訴系統僅僅返回一些HTML,它做到了!
URL的第一部分決定了執行哪個控制器類。所以 /HelloWorld 映射到 HelloWorldController 類。
URL的第二部分決定了執行控制器類中的哪個操作(方法)。所以/HelloWorld/Index 觸發了HelloWorldController 類的Index方法。
注意:Index方法被用作預設方法(路由中配置的)。
這就是為什麼如果沒有明確指定方法時,Index方法將會被調用的原因。
瀏覽ttp://localhost:xxxx/HelloWorld/Welcome。 Welcome方法返回字串"This is the Welcome action method...".
MVC預設映射為/[Controller]/[ActionName]/[Parameters].
對於這個URL來說,控制器是HelloWorld,Welcome是回應程式法。您不用必須使用[Parameters]。
讓我們稍微修改一下以便您可以通過URL傳遞參數給控制器。(比如,/HelloWorld/Welcome?name=Scott&numtimes=4). 改變Welcome方法,像下面一樣添加兩個參數。注意,代碼中使用C#的選擇性參數特性指明參數numTimes預設值為1(不傳遞該參數時)。
public string Welcome(string name, int numTimes = 1){ return HttpUtility.HtmlEncode("Hello " + name + ", NumTimes is: " + numTimes);}
運行應用程式並瀏覽URL(http://localhost:xxxx/HelloWorld/Welcome?name=Scott&numtimes=4).
您可以為name和numtimes多試幾次其他的值。系統自動從URL請求字串中映射到您的方法中相應的參數上。
在這兩個例子中控制器已經完成了MVC中的“V和C”,也即是說,視圖和控制器已經工作了。控制器直接返回了HTML.通常您不想讓控制器直接返回HTML,因為這會變成非常累贅的代碼。我們通常使用一個單獨的視圖模板檔案來協助產生HTML響應。
下一節讓我們來看看我們如何能夠做到這一點。