MVC的全稱為model-view-controller(模型-檢視-控制器)。MVC是一種開發應用程式的模式,這個模式已經具有了很好的框架架構,並且十分容易維護。使用MVC開發出來的應用程式一般包括以下幾塊內容:
- 控制器(Controller):控制器類處理客戶端向Web應用程式發出的請求,獲取資料,並指定返回給客戶端,用來顯示處理結果的檢視。
- 模型(Model):模型類代表了應用程式的資料,這些資料通常具有一個資料驗證邏輯,用來使得這些資料必須符合業務邏輯。
- 檢視(View):檢視類是Web應用程式中用來生成並顯示HTML格式的伺服器端對客戶端請求的響應結果的模板檔案。
在本教程中,將全面介紹這些概念,並且向你展示如何利用它們來搭建一個應用程式。
首先,讓我們來建立一個控制器(controller)類。在解決方案資源管理器中,滑鼠右擊Controllers資料夾,並且點選新增-〉控制器,如圖2-1所示。
圖2-1 新增控制器
在彈出的“新增控制器”對話方塊中,將控制器命名為“HelloWorldController”,然後點選新增按鈕,如圖2-2所示。
圖2-2 命名控制器
觀察解決方案資源管理器中新增加了一個檔案,名字為HelloWorldController.cs,並且該檔案呈開啟狀態,如圖2-3所示。
修改開啟的HelloWorldController.cs檔案,在HelloWorldController類中,建立如程式碼清單2-1中所示的兩個方法,控制器將返回一個HTML格式的字串。
程式碼清單2-1 在控制器中建立方法
public class HelloWorldController : Controller
{
//
// GET: /HelloWorld/
public string Index()
{
return "這是我的<b>預設</b>action...";
}
//
// GET: /HelloWorld/Welcome/
public string WelCome()
{
return "這是我的Welcome方法...";
}
}
在這個修改後的HelloWorldController控制器中,第一個方法名為Index。現在讓我們從瀏覽器中呼叫該方法。執行應用程式(按F5鍵或Ctrl+F5鍵),在開啟的瀏覽器中的位址列後面,新增“HelloWorld”路徑(譬如,在我的計算機上,瀏覽器中地址為http://localhost:4423/HelloWorld),畫面顯示如圖2-4所示。由於在Index方法中,直接返回了一個HTML格式的字串,所以在瀏覽器中將該字串顯示出來。
圖2-4 HelloWorldController控制器中Index方法的執行結果
在ASP.NET MVC中,可以根據瀏覽器中的輸入地址來呼叫不同的控制器或控制七種不同的方法。ASP.NET MVC的預設的對映邏輯使用如下所示的格式來決定應該呼叫什麼控制器或控制器中的什麼方法。
/[Controller]/[ActionName]/[Parameters]
URL地址的第一部分決定呼叫哪個控制器類,所以“/HelloWorld”對映到HelloWorldController控制器類。第二部分決定呼叫控制器中的哪個方法。所以“/HelloWorld/Index”將會呼叫HelloWorldController控制器類的Index方法。由於Index方法是控制器類的預設方法(可以另外指定控制器類的預設方法),所以也可只輸入“/HelloWorld”來呼叫該方法。
在瀏覽器的位址列中,輸入“http://localhost:xxxx/HelloWorld/Welcome”,將會呼叫HelloWorldController控制器類的Welcome方法,該方法返回“這是我的Welcome方法...”文字,所以瀏覽器中顯示該文字,如圖2-5所示。
圖2-5 HelloWorldController控制器中Welcome方法的執行結果
接下來,讓我們修改Welcome方法,以便在URL位址列中可以傳遞一些引數給該方法(例如:/HelloWorld/Welcome?name=Scott&numtimes=4)。修改後的程式碼如下所示。注意這裡我們使用了C#的可選引數,當URL地址中沒有使用numtimes引數時,該引數被預設設定為1。
public string Welcome(string name,int numTimes=1)
{
return HttpUtility.HtmlEncode("Hello " + name + ",NumTimes is:" + numTimes);
}
執行該應用程式,在瀏覽器中輸入“http://localhost:xxxx/HelloWorld/Welcome?name=Scott&numtimes=4”,執行結果顯示如圖2-6所示。瀏覽器自動將URL位址列中的引數對映成Welcome方法中的傳入引數。
到現在為止,我們展示了MVC中的“VC”(檢視與控制器)部分的工作機制,控制器返回HTML字串。很顯然大多數情況下你不想讓控制器直接返回HTML字串,因為那樣的話編碼起來就太麻煩了。所以我們需要使用不同的檢視模板檔案來幫助生成HTML格式的頁面檔案,在下一節中讓我們來看一下如何在ASP.NET MVC3中使用檢視。