添加一個控制器
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中的“VC”,也即是說,視圖和控制器已經
工作了。控制器直接返回了HTML.通常您不想讓控制器直接返回HTML,因為這會變成
非常累贅的代碼。我們通常使用一個單獨的視圖模板檔案來協助產生HTML響應。
讓我們來看看我們如何能夠做到這一點。
下一節:視圖 View