MVC添加一個控制器

        控制器的主要作用是:處理瀏覽器的請求,取得數據模型,然後指定要響應瀏覽器請求的視圖模板。

在解決方案資源管理器裏,右鍵點擊“Controllers”,選擇“新建”-》“控制器……”,輸入控制器名稱“HelloWorldController”,模板保持默認的選項(“空MVC控制器”),點擊“添加”按鈕,新增的控制器類代碼如下: 

 public class HelloWorldController : Controller//添加了一個控制器類
    {
        public ActionResult Index()
        {
           return View();
        }

}

修改以後:

     public string Welcom()
        {
            return "這是我的新方法";
        }

在這個例子中控制器方法將返回一個字符串的HTML。本控制器被命名爲HelloWorldController,代碼中的第一個方法被命名爲Index。讓我們從瀏覽器中調用它。運行應用程序(按F5或CTRL + F5)。在瀏覽器的地址欄中輸入路徑“HelloWorld“(例如,在下面的示例中:http://localhost:5279/HelloWorld)。在上面的方法中,代碼直接返回了一個字符串。你告訴系統只返回一些HTML,系統確實這樣做了!

根據傳入的URL,ASP.NET MVC調用不同的控制器類(和它們之中不同的操作方法)。使用ASP.NET MVC默認的URL路由邏輯格式,以確定哪些代碼會被調用:

/[Controller]/[ActionName]/[Parameters]

URL的第一部分確定那個控制器類會被執行。因此 /HelloWorld映射到HelloWorldController控制器類。URL的第二部分確定要執行控制器類中的那個操作方法。因此 /HelloWorld/Index,會使得HelloWorldController控制器類的Index 方法被執行。請注意,我們只需要瀏覽 /HelloWorld路徑,默認情況下會調用Index方法。如果沒有明確的指定操作方法,控制器類默認調用Index方法。

瀏覽http://localhost:xxxx/HelloWorld/Welcome。Welcome方法會被運行並返回字符串:"這是歡迎方法”。 默認的MVC映射爲/[Controller]/[ActionName]/[Parameters] ,對於這個URL,控制器類是HelloWorld,操作方法是Welcome,您還沒有使用過URL的[Parameters] 部分。

讓我們稍微修改一下這個例子,以便可以使用URL傳遞一些參數信息給控制器類(例如, /HelloWorld/Welcome?name=Tom&num=4)。改變您的Welcome 方法來包含兩個參數,如下所示。需要注意的是,示例代碼使用了C#語言的可選參數功能,num參數在不傳值時,默認值爲1

    public string Welcom2(string name="tom", int num = 1)
        {
            return "您好," + name + "," + num + "次";
        }

運行您的應用程序並瀏覽此URL(http://localhost:xxxx/HelloWorld/Welcome?name=Tom&num=4),得到結果爲“你好,Tom,4次”。你可以對參數name 和num 嘗試不同的值。 ASP.NET MVC 模型綁定機制 會自動將地址欄中URL裏的 查詢字符串映射到您方法中的參數。

譯者注:學習到這裏,善於思考的讀者會可能做以下嘗試

 public string Welcome(string name)
 {
   return "你好," + name ;
 }

在瀏覽器中輸入:http://localhost:5279/HelloWorld/Welcome/Tom,結果發現輸出爲“你好,”,並沒有輸出期望的“你好,Tom”。

不是/[Controller]/[ActionName]/[Parameters]嗎?此處爲什麼無法獲取url中傳入的參數呢?此處跟路由約定有關,默認情況下,參數標識符爲ID,方能正確傳入,如下所示修改

public string Welcome(int ID)
{
   return "ID:" + ID;
}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章