アクションを作成する (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
アクションとしてグローバルに公開するには、メソッドは特定の要件を満たす必要があります。
- メソッドはパブリックでなければなりません。
- メソッドを静的メソッドにすることはできません。
- メソッドを拡張メソッドにすることはできません。
- メソッドを、コンストラクター、ゲッター、またはセッターにすることはできません。
- メソッドは、オープン ジェネリック型を持つことはできません。
- メソッドは、コントローラーの基底クラスのメソッドではない。
- メソッドに ref パラメーターおよび out パラメーターを含めることはできません。
コントローラー アクションの戻り値の型に制限がないことに注意してください。 コントローラー アクションは、文字列、DateTime、Random クラスのインスタンス、または void を返すことができます。 ASP.NET MVC フレームワークにより、アクションの結果ではない戻り値の型は文字列に変換され、その文字列がブラウザーにレンダリングされます。
これらの要件に違反しないメソッドをコントローラーに追加すると、そのメソッドはコントローラー アクションとして公開されます。 ここで注意が必要です。 コントローラー アクションは、インターネットに接続されているすべてのユーザーが呼び出すことができます。 たとえば、DeleteMyWebsite() コントローラー アクションを作成しないでください。
パブリック メソッドが呼び出されないようにする
コントローラー クラスでパブリック メソッドを作成する必要があり、そのメソッドをコントローラー アクションとして公開したくない場合は、<NonAction> 属性を使用してメソッドが呼び出されないようにすることができます。 たとえば、リスト 2 のコントローラーには、<NonAction> 属性で修飾された CompanySecrets() という名前のパブリック メソッドが含まれています。
リスト 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 のエラー メッセージが表示されます。
図 1: NonAction メソッドの呼び出し (フルサイズの画像を表示するにはクリックします)