アクションの作成


このチュートリアルでは、新しいコントローラactionの作成方法、actionメソッドの要件、メソッドがactionに露出しないようにする方法について説明します.

コントローラへのアクションの追加


コントローラにactionを追加することは、コントローラに新しい方法を追加することです.たとえば、コード1のコントローラにはIndex()とSayHello()という名前があります.両方の方法はactionに暴露された.
コード1–ControllersHomeController.cs

1つの方法は外部にactionとして暴露するには、いくつかの要求を満たさなければならない.
  • メソッドは、共通でなければなりません.
  • は静的方法ではありません.
  • は拡張方法ではありません.
  • は、コンストラクション関数、属性付与器(getter)、または値取得器(setter)ではありません.
  • には公開された汎用タイプはありません.
  • は、コントローラベースクラスのメソッドではありません.
  • にはrefまたはoutパラメータは含まれません.

  • 注意コントローラactionの戻り値には厳密な要求はありません.コントローラactionはstring,DateTime,Randomクラスのインスタンス,またはvoidを返すことができる.ASP.NET MVCフレームワークは、action resultではない戻り値をstringに変換し、このstringをブラウザに表示します.
    上記の要件に従ってコントローラにメソッドを追加すると、このメソッドはactionに露出します.ここでは、コントローラactionがインターネットに接続されている任意の人に呼び出されることに注意してください.DeleteMyWebsite()コントローラactionは作成しないでください.

    パブリックメソッドが呼び出されないようにする


    コントローラクラスに共通のメソッドを作成し、コントローラactionに露出したくない場合は、[NonAction]プロパティを使用してメソッドが呼び出されないようにすることができます.例えば、コード2のコントローラは、[NonAction]特性で修飾されたCommanySecrets()という共通の方法を含む.
    コード2–ControllersWorkController.cs

    ブラウザアドレスバーに/Work/CompanySecrets呼び出しCompanySecrets()コントローラactionを入力しようとすると、図1に示すエラーメッセージが表示されます.

    図01:非actionメソッドの呼び出し(クリックしてフルサイズを表示)
    原文住所:http://www.asp.net/learn/mvc/tutorial-34-cs.aspx