共用方式為


新增控制器 (VB)

Rick Anderson

本教學課程將說明基本概念,簡介如何使用 Microsoft Visual Web Developer 2010 Express Service Pack 1 (Visual Studio Microsoft 的免費版本) 建置 ASP.NET MVC Web 應用程式。 開始之前,請確定您已安裝下列必要項目。 您可按以下連結安裝所有專案:Web Platform Installer。 或者可使用下列連結個別安裝必要條件:

如果您使用 Visual Studio 2010 而非 Visual Web Developer 2010,請按以下連結安裝必要條件:Visual Studio 2010 必要條件

本主題隨附內含 VB.NET 原始程式碼的 Visual Web Developer 專案。 下載 VB.NET 版本。 如果您偏好使用 C#,請改參閱本教學課程的 C# 版。

MVC 代表 model-view-controller。 MVC 是開發應用程式的模式,讓每個元件都有個別的責任:

  • 模型:應用程式的數據。
  • 檢視:您的應用程式將用於動態產生 HTML 回應的範本檔案。
  • 控制器:處理應用程式連入 URL 要求的類別、擷取模型數據,然後指定檢視範本來轉譯對用戶端的回應。

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

以滑鼠右鍵按兩下 方案總管中的 Controllers 資料夾,然後選取[新增控制器],以建立新的控制器。

AddController

將新的控制器命名為「HelloWorldController」,然後按一下 [新增]

2AddEmptyController

請注意,在右側 方案總管,您已為您建立名為 HelloWorldController.cs 的新檔案,並在 IDE 中開啟檔案。

在新的 public class HelloWorldController 區塊內,建立兩個新的方法,看起來像下列程序代碼。 我們將直接從控制器傳回 HTML 字串作為範例。

Namespace MvcMovie
    Public Class HelloWorldController
        Inherits System.Web.Mvc.Controller

        Public Function Index() As String
            Return "This is my default action..."
        End Function

        Public Function Welcome() As String
            Return "This is the Welcome action method..."
        End Function

    End Class
End Namespace

您的控制器已命名 HelloWorldController ,且您的新方法名稱為 Index。 執行應用程式 (按 F5 或 Ctrl+F5)。 瀏覽器啟動之後,請將 「HelloWorld」 附加至網址列中的路徑。 (在我電腦上,這是 http://localhost:43246/HelloWorld)您的瀏覽器看起來會像下面的螢幕快照。 在上述方法中,程式碼會直接傳回字串。 我們告訴系統只傳回一些 HTML,它做到了!

顯示瀏覽器的螢幕快照,其文字為 [這是我在視窗中的默認動作]。

ASP.NET MVC 會根據傳入 URL 叫用不同的控制器類別 (和類別中的不同動作方法)。 ASP.NET MVC 所使用的預設對應邏輯會使用如下的格式來控制叫用的程式代碼:

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

URL 的第一個部分會判斷要執行的控制器類別。 因此,/HelloWorld 會對應 HelloWorldController 類別。 URL 的第二部分則決定了類別要執行的動作方法。 因此 ,/HelloWorld/Index 會使 HelloWorldController 類別的 Index 方法執行。 請注意,我們只需要流覽 上述 /HelloWorld ,而且 Index 預設會使用 方法。 這是因為若未未明確指定方法,呼叫控制器時將預設使用名為 Index 的方法。

瀏覽至 http://localhost:xxxx/HelloWorld/WelcomeWelcome 方法隨即執行,並傳回字串 "This is the Welcome action method..."。 預設的 MVC 對應是 /[Controller]/[ActionName]/[Parameters]。 在此 URL 中,控制器是 HelloWorldWelcome 是方法。 我們尚未使用 [Parameters] URL 的一部分。

顯示瀏覽器的螢幕快照,其文字為視窗中的歡迎動作方法。

讓我們稍微修改此範例,以便將一些參數資訊從 URL 傳遞至控制器(例如 /HelloWorld/Welcome?name=Scott&numtimes=4)。 變更 Welcome 方法以包含兩個參數,如下所示。 請注意,我們已使用 VB 選擇性參數功能來指出 numTimes ,如果沒有針對該參數傳遞任何值,參數應該預設為1。

Public Function Welcome(ByVal name As String, Optional ByVal numTimes As Integer = 1) As String
    Dim message As String = "Hello " & name & ", NumTimes is: " & numTimes
    Return "" & Server.HtmlEncode(message) & ""
End Function

執行您的應用程式並流覽至 http://localhost:xxxx/HelloWorld/Welcome?name=Scott&numtimes=4 您可以針對 namenumtimes嘗試不同的值。 系統會自動將網址列中查詢字串中的具名參數對應至方法中的參數。

顯示瀏覽器的螢幕快照,其文字為 Hello Scott Num Times 在視窗中為 4。

在這兩個範例中,控制器一直在執行MVC的 VC部分,也就是檢視和控制器的工作。 控制器會直接傳回 HTML。 通常我們不希望控制器直接傳回 HTML,因為這對程式代碼變得非常繁瑣。 相反地,我們通會常使用個別的檢視範本檔案來產生 HTML 回應。 讓我們看看如何做到這一點。