次の方法で共有


コントローラーを作成する (VB)

作成者: Stephen Walther

このチュートリアルでは、Stephen Walther が、ASP.NET MVC アプリケーションにコントローラーを追加する方法について説明します。

このチュートリアルの目的は、新しい ASP.NET MVC コントローラーを作成する方法を説明することです。 Visual Studio の [コントローラーの追加] メニュー オプションの使用と、手動でのクラス ファイルの作成の両方で、コントローラーを作成する方法について説明します。

[コントローラーの追加] メニュー オプションの使用

新しいコントローラーを作成する最も簡単な方法は、Visual Studio [ソリューション エクスプローラー] ウィンドウで Controllers フォルダーを右クリックし、[追加]、[コントローラー] メニュー オプションを選択することです (図 1 を参照)。 このメニュー オプションを選択すると、[コントローラーの追加] ダイアログが開きます (図 2 を参照)。

Screenshot of the Visual Studio Solution Explorer window, which is showing the Add and Controller options in the right-click menu.

図 01: 新しいコントローラーの追加 (クリックするとフルサイズの画像が表示されます)

Screenshot of the Add Controller dialog box, which is showing Default 1 Controller in the Controller Name field.

図 02: [コントローラーの追加] ダイアログ (クリックするとフルサイズの画像が表示されます)

コントローラー名の最初の部分が [コントローラーの追加] ダイアログで強調表示されていることに注意してください。 すべてのコントローラー名は、サフィックス Controller で終わる必要があります。 たとえば、ProductController という名前のコントローラーを作成できますが、Product という名前のコントローラーは作成できません。

Controller サフィックスがないコントローラーを作成した場合、そのコントローラーを呼び出すことはできません。 これを行わないでください。私はこの間違いで人生の何時間も無駄にしました。

リスト 1 - Controllers\ProductController.vb

Public Class ProductController
    Inherits System.Web.Mvc.Controller

    '
    ' GET: /Product/

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

End Class

コントローラーは常に Controllers フォルダーに作成する必要があります。 そうしないと、ASP.NET MVC の規則に違反し、他の開発者がアプリケーションを理解するのが難しくなります。

スキャフォールディング アクション メソッド

コントローラーを作成するときに、Create、Update、Details アクション メソッドを自動的に生成するオプションがあります (図 3 を参照)。 このオプションを選択すると、リスト 2 のコントローラー クラスが生成されます。

Creating action methods automatically

図 03: アクション メソッドを自動的に作成する (クリックするとフルサイズの画像が表示されます)

リスト 2 - Controllers\CustomerController.vb

Public Class CustomerController
    Inherits System.Web.Mvc.Controller

    '
    ' GET: /Customer/

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

    '
    ' GET: /Customer/Details/5

    Function Details(ByVal id As Integer) As ActionResult
        Return View()
    End Function

    '
    ' GET: /Customer/Create

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

    '
    ' POST: /Customer/Create

    <AcceptVerbs(HttpVerbs.Post)> _
    Function Create(ByVal collection As FormCollection) As ActionResult
        Try
            ' TODO: Add insert logic here
            Return RedirectToAction("Index")
        Catch
            Return View()
        End Try
    End Function

    '
    ' GET: /Customer/Edit/5

    Function Edit(ByVal id As Integer) As ActionResult
        Return View()
    End Function

    '
    ' POST: /Customer/Edit/5

    <AcceptVerbs(HttpVerbs.Post)> _
    Function Edit(ByVal id As Integer, ByVal collection As FormCollection) As ActionResult
        Try
            ' TODO: Add update logic here

            Return RedirectToAction("Index")
        Catch
            Return View()
        End Try
    End Function
End Class

これらの生成されたメソッドはスタブ メソッドです。 顧客の詳細を自分で作成、更新、表示するための実際のロジックを追加する必要があります。 しかし、スタブ メソッドは優れた開始点となります。

コントローラー クラスの作成

ASP.NET MVC コントローラーは単なるクラスです。 必要に応じて、便利な Visual Studio コントローラー スキャフォールディングを無視して、コントローラー クラスを手動で作成できます。 次のステップを実行します。

  1. Controllers フォルダーを右クリックし、メニュー オプション [追加]、[新しい項目] の順に選択し、[クラス] テンプレートを選択します (図 4 を参照)。
  2. 新しいクラスに PersonController.vb という名前を付け、[追加] ボタンを選択します。
  3. 結果のクラス ファイルを変更して、クラスが基本の System.Web.Mvc.Controller クラスから継承されるようにします (リスト 3 を参照)。

Creating a new class

図 04: 新しいクラスの作成 (クリックするとフルサイズの画像が表示されます)

リスト 3 - Controllers\PersonController.vb

Public Class PersonController
    inherits Controller

    Function Index AS String
        Return "Hello World!"
    End Function

End Class

リスト 3 のコントローラーでは、文字列 "Hello World!" を返す Index() という名前の 1 つのアクションを公開します。 このコントローラー アクションを呼び出すには、アプリケーションを実行し、次のような URL を要求します。

http://localhost:40071/Person

Note

ASP.NET 開発サーバーでは、ランダムなポート番号 (40071 など) を使用します。 コントローラーを呼び出す URL を入力するときは、適切なポート番号を指定する必要があります。 Windows 通知領域 (画面の右下) にある ASP.NET 開発サーバーのアイコンの上にマウス ポインターを置くと、ポート番号を確認できます。