0

私はこのルートを作成しました:

    routes.MapRoute( _
        "Pages", _
        "Pages/{id}/{title}", _
        New With {.controller = "Home", .action = "Pages", .id = UrlParameter.Optional, .title = UrlParameter.Optional} _
    )

次に、「ホーム」コントローラーで次の「ページ」アクションを作成しました。

Function Pages(Optional ByVal id = 0, Optional ByVal title = "") As ActionResult

    Dim db As NavDbContext = New NavDbContext
    Dim page = db.Tbl_Navigations.Where(Function(p) p.NAV_ID = id)

    If (page.Any) Then

        Dim _title = page.Single.NAV_Element.ToString
        Dim content = page.Single.NAV_Content.ToString
        ViewBag.Title = _title
        ViewBag.Content = content

    End If

    Return View()

End Function

〜/ Pages / 8 / MyPage(データベースで有効なID)に移動すると、「リソースが見つかりません」と表示されます。これを適切にルーティングするにはどうすればよいですか?ありがとう。

4

1 に答える 1

3

ルートに複数のパラメーターを含めることはできずUrlParameter.Optional、オプションのパラメーターはルートの最後のパラメーターにする必要があります。UrlParameter.Optionalルートの id 部分から を 削除します。

routes.MapRoute( _
        "Pages", _
        "Pages/{id}/{title}", _
        New With {.controller = "Home", .action = "Pages", .title = UrlParameter.Optional})

そしてコントローラーアクションメソッド

Function Pages(ByVal id As Integer, Optional ByVal title = "") As ActionResult

このルートに両方のパラメーターが必要な場合は、特定のルートが必要な要求のみを処理するようにするために、いずれのパラメーターもオプションとして指定する必要はありません。

routes.MapRoute( _
        "Pages", _
        "Pages/{id}/{title}", _
        New With {.controller = "Home", .action = "Pages"})

そしてコントローラーアクションメソッド

Function Pages(ByVal id As Integer, ByVal title As String) As ActionResult
于 2012-08-28T20:34:44.900 に答える