次の方法で共有


アクションを作成する (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 のエラー メッセージが表示されます。

Invoking a NonAction method

図 1: NonAction メソッドの呼び出し (フルサイズの画像を表示するにはクリックします)