次の方法で共有


カスタム ルートを作成する (VB)

提供元: Microsoft

ASP.NET MVC アプリケーションにカスタム ルートを追加する方法について説明します。 このチュートリアルでは、Global.asax ファイルの既定のルーティング テーブルを変更する方法について説明します。

このチュートリアルでは、ASP.NET MVC アプリケーションにカスタム ルートを追加する方法について説明します。 Global.asax ファイルの既定のルーティング テーブルをカスタム ルートで変更する方法について説明します。

ASP.NET MVC アプリケーションでは、既定のルーティング テーブルが正常に動作します。 ただし、特殊なルーティングが必要となる場合があります。 その場合は、カスタム ルートを作成できます。

たとえば、ブログ アプリケーションを構築しているとします。 たとえば、次のような受信要求を処理する場合があります。

/Archive/12-25-2009

ユーザーがこの要求を入力すると、日付 12/25/2009 に対応するブログ エントリが返されます。 この種類の要求を処理するには、カスタム ルートを作成する必要があります。

リスト 1 の Global.asax ファイルには、/Archive/エントリの日付 という要求を処理する、Blog という名前の新しいカスタム ルートが含まれています。

リスト 1 - Global.asax (カスタム ルートを持つ)

Public Class MvcApplication
    Inherits System.Web.HttpApplication
    Shared Sub RegisterRoutes(ByVal routes As RouteCollection)
        routes.IgnoreRoute("{resource}.axd/{*pathInfo}")
        ' MapRoute takes the following parameters, in order:
        ' (1) Route name
        ' (2) URL with parameters
        ' (3) Parameter defaults
        routes.MapRoute( _
            "Blog", _
            "Archive/{entryDate}", _
            New With {.controller = "Archive", .action = "Entry"} _
        )
        routes.MapRoute( _
            "Default", _
            "{controller}/{action}/{id}", _
            New With {.controller = "Home", .action = "Index", .id = ""} _
        )
    End Sub
    Sub Application_Start()
        RegisterRoutes(RouteTable.Routes)
    End Sub
End Class

ルーティング テーブルに追加するルートの順序は重要です。 新しいカスタム ルートである Blog は、既存の既定のルートの前に追加されます。 順序を逆にした場合、カスタム ルートではなく、既定のルートが常に呼び出されます。

カスタム ブログ ルートは、/Archive/ で始まるすべての要求を照合します。 したがって、次のすべての URL が照合されます。

  • /Archive/12-25-2009

  • /Archive/10-6-2004

  • /Archive/apple

カスタム ルートは、受信要求を Archive という名前のコントローラーにマップし、Entry() アクションを呼び出します。 Entry() メソッドが呼び出されると、エントリの日付は entryDate という名前のパラメーターとして渡されます。

Blog カスタム ルートは、リスト 2 のコントローラーで使用できます。

リスト 2 - ArchiveController.vb

Public Class ArchiveController
    Inherits System.Web.Mvc.Controller
    Function Entry(ByVal entryDate As DateTime)
        Return "You requested the entry from " & entryDate.ToString()
    End Function
End Class

リスト 2 の Entry() メソッドは DateTime 型のパラメーターを受け取ることに注意してください。 MVC フレームワークはスマートなので、URL で受け取ったエントリの日付を DateTime 値に自動的に変換してくれます。 URL のエントリ日付パラメーターを DateTime に変換できない場合は、エラーが発生します (図 1 を参照)。

図 1 - パラメーターの変換エラー

The New Project dialog box

図 01: パラメーターの変換中にエラーが発生しました (クリックすると、フルサイズの画像を表示できます)

まとめ

このチュートリアルの目的は、カスタム ルートを作成する方法を示すことでした。 ブログ エントリを表す Global.asax ファイルのルーティング テーブルにカスタム ルートを追加する方法について学習しました。 ブログ エントリの要求を ArchiveController という名前のコントローラーと Entry() という名前のコントローラー アクションにマップする方法について学習しました。