共用方式為


新增控制器 - 介紹 ASP.NET MVC 的基礎知識

作者:史考特漢塞爾曼

注意

如果本教學課程可在此處使用 Visual Studio 2013 獲取,則為更新版本。 新教學課程使用 ASP.NET MVC 5,它比本教學課程提供了許多改進。

這是一個初學者教學課程,介紹 ASP.NET MVC 的基礎知識。 您將建立一個從資料庫讀取和寫入的簡單 Web 應用程式。 造訪 ASP.NET MVC 學習中心以尋找其他 ASP.NET MVC 教學課程和範例。

MVC 代表模型、檢視、控制器。 MVC 是一種開發應用程式的模式,其中每個部分都有不同的職責。

  • 模型:您的應用程式的資料
  • 檢視:您的應用程式將用於動態產生 HTML 回應的範本檔案。
  • 控制器:處理傳入應用程式的 URL 請求、檢索模型資料,然後指定將回應呈現回用戶端的檢視範本的類

我們將在本教學課程中介紹所有這些概念,並向您展示如何使用它們來建立應用程式。

讓我們透過右鍵點擊解決方案資源管理器中的控制器資料夾並選擇「新增控制器」來建立新控制器。

AddControllerRightClick

將新控制器命名為「HelloWorldController」並點擊「新增」。

新增控制器對話框

請注意,在右側的解決方案資源管理器中,已為您建立了一個名為 HelloWorldController.cs 的新文件,並且該文件現已在 IDE 中開啟。

HelloWorldControllerCode

在新的公共類別 HelloWorldController 中建立兩個如下所示的新方法。 作為範例,我們將直接從控制器傳回 HTML 字串。

using System.Web.Mvc;
 
namespace Movies.Controllers
{
    public class HelloWorldController : Controller
    {
        public string Index()
        {
            return "This is my default action...";      
        }
        
        public string Welcome()
        {  
            return "This is the Welcome action method...";
        }  
    }
}

您的控制器名稱為 HelloWorldController,您的新方法名為 Index。 再次運行您的應用程序,就像以前一樣 (點擊播放按鈕或按 F5 執行此操作)。 瀏覽器啟動後,將網址列中的路徑變更為 http://localhost:xx/HelloWorld,其中 xx 是您的電腦選擇的數字。 現在您的瀏覽器應該如下圖所示。 在上面的方法中,我們傳回了一個傳遞到名為「Content」的方法中的字串。我們告訴系統只回傳一些 HTML,它確實回傳了!

ASP.NET MVC 會根據傳入的 URL 呼叫不同的 Controller 類別 (以及其中的不同 Action 方法)。 ASP.NET MVC 所使用的預設映射邏輯使用以下格式來控制執行哪些程式碼:

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

URL 的第一部分決定要執行的控制器類別。 因此 /HelloWorld 對應到 HelloWorldController 類別。 URL 的第二部分確定要在類別上執行的 Action 方法。 因此 /HelloWorld/Index 將導致 HelloWorldController 類別的 Index() 方法執行。 請注意,我們只需造訪上面的 /HelloWorld 並且隱含了方法 Index。 這是因為,如果未明確指定,名為「Index」的方法是控制器上將呼叫的預設方法。

這是我的預設操作

現在,讓我們訪問 http://localhost:xx/HelloWorld/Welcome. 現在我們的 Welcome 方法已經執行並傳回了它的 HTML 字串。

同樣,/[Controller]/[ActionName]/[Parameters],因此控制器是 HelloWorld,Welcome 是本例中的方法。 我們還沒有完成參數。

這是歡迎操作方法

讓我們稍微修改一下範例,以便可以將一些資訊從 URL 傳遞到控制器,例如:/HelloWorld/Welcome?name=Scott&numtimes=4。 更改您的歡迎方法以包含兩個參數並按如下所示進行更新。 請注意,我們使用了 C# 可選參數功能來指示如果未傳入參數 numTimes,則應預設為 1。

public string Welcome(string name, int numTimes = 1)
{
   string message = "Hello " + name + ", NumTimes is: " + numTimes;
   return "" + Server.HtmlEncode(message) + "";
}

運行您的應用程式並造訪 http://localhost:xx/HelloWorld/Welcome?name=Scott&numtimes=4 根據需要更改 name 和 numtimes 的值。 系統會自動將網址列中查詢字串中的命名參數對應到方法中的參數。

在這兩個範例中,控制器已經完成了所有工作,並且直接返回 HTML。 通常我們不希望我們的控制器直接返回 HTML - 因為這最終會使程式碼變得非常麻煩。 相反,我們通常會使用單獨的檢視範本檔案來幫助產生 HTML 回應。 讓我們看看如何做到這一點。 關閉瀏覽器並返回 IDE。