建立動作 (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。
- 方法不能有開放式泛型類型。
- 方法不是控制器基底類別的方法。
- 方法不能包含 ref 或 out 參數。
請注意,控制器動作的傳回類型沒有任何限制。 控制器動作可以傳回字串、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 中接到錯誤訊息。
圖 01:叫用 NonAction 方法 (按一下以檢視全尺寸影像)