共用方式為


建立動作 (VB)

Microsoft 提供

了解如何將新動作新增至 ASP.NET MVC 控制器。 了解一個方法要當成動作的條件需求為何。

本教學課程的目標是說明您可以如何建立新的控制器動作。 您了解動作方法的需求。 您也了解如何防止方法公開成為動作。

將動作加入至控制器

您可以將新的方法新增至控制器,以將新的動作新增至控制器。 例如,清單 1 中的控制器包含名為 Index() 的動作,以及名為 SayHello() 的動作。 這兩種方法都會公開為動作。

清單 1 - Controllers\HomeController.vb

<HandleError()> _
Public Class HomeController
    Inherits System.Web.Mvc.Controller

    Function Index() As ActionResult
        Return View()
    End Function

    Function SayHello() As String
        Return "Hello!"
    End Function
End Class

為了將某領域公開為動作,方法必須符合特定需求:

  • 方法必須為公用。
  • 方法不可以是靜態方法。
  • 方法不可以是延伸方法。
  • 方法不可以是建構函式、getter 或 setter。
  • 方法不能有開放式泛型類型。
  • 方法不是控制器基底類別的方法。
  • 方法不能包含 refout 參數。

請注意,控制器動作的傳回類型沒有任何限制。 控制器動作可以傳回字串、DateTime、Random 類別的執行個體或 void。 ASP.NET MVC 架構會將不是動作結果的任何傳回類型轉換成字串,並將字串轉譯至瀏覽器。

當您將任何不違反這些需求的方法新增至控制器時,該方法會公開為控制器動作。 在這裡要小心。 任何連線到網際網路的人都可以叫用控制器動作。 例如,請勿建立 DeleteMyWebsite() 控制器動作。

防止叫用公用方法

如果您需要在控制器類別中建立公用方法,而且不想要將方法公開為控制器動作,則可以避免使用 <NonAction> 屬性叫用方法。 例如,清單 2 中的控制器包含名為 CompanySecrets() 的公用方法,而該公用方法是以 <NonAction> 屬性裝飾。

清單 2 – Controllers\WorkController.vb

Public Class WorkController
    Inherits System.Web.Mvc.Controller

     _
    Function CompanySecrets() As String
        Return "This information is secret."
    End Function

End Class

如果您嘗試在瀏覽器的網址列中輸入 /Work/CompanySecrets 來叫用 CompanySecrets() 控制器動作,則您會在圖 1 中接到錯誤訊息。

叫用 NonAction 方法

圖 01:叫用 NonAction 方法 (按一下以檢視全尺寸影像)