7

Stackで何年も検索し、MSDNのドキュメントを読み、Bingを使用しましたが、なぜこれが機能しないのかわかりません。以下の関連コードとルートがあります。と呼ばれるルートはBrowse問題なく機能しますがproductCode、ルートのパラメータDetailsは常に何にも等しくありません。変更を加えると、「リソースが見つかりません」404ページが表示され続けます。

' Lives in controller called 'Details'
' Usage: site.com/details/abc123
Function Index(productCode As String) As ActionResult

' Lives in controller called 'Browse'    
' Usage: site.com/browse/scifi/2
Function Index(genre As String, Optional page As Integer = 1) As ActionResult

ルートは次のとおりです。

routes.MapRoute( _
        "Browse", _
        "{controller}/{genre}/{page}", _
        New With {.controller = "Browse", .action = "Index", .id = UrlParameter.Optional, .page = UrlParameter.Optional}
    )

    routes.MapRoute( _
        "Details", _
        "details/{productCode}", _
        New With {.controller = "Details", .action = "Info", .productCode = UrlParameter.Optional}
    )
4

1 に答える 1

7

ルートを定義するときは、順序が重要です。

あなたがリクエストするとき、site.com/details/abc123私はそれがあなたの最初のルートと一致すると思います。

あなたは得るでしょう

controller = "details"

action = "Index"

genre = "abc123"

これが、productCodeがnullである理由です。

2つのroute.MapRouteステートメントを入れ替えると、問題が解決するはずです。

2番目のルートでは、アクションがinfoではなくindexに設定されていますが、これはタイプミスだと思いますか?

于 2012-05-25T09:44:20.490 に答える