0

ルートの1つのオプションパラメータに問題があります。ルートは次のようになります。

            routes.MapRoute(
            "VideoList", // Route name
            "VideoList/{page}", // URL with parameters
            new { controller = "Video", action = "VideoList" , page = UrlParameter.Optional}
        );

初めて使用する場合は正常に動作します。

@Html.RouteLink("Video", "VideoList", null, new { id = "idVideo", @class = "menu-item" })

コントローラーアクションはページパラメーターの代わりにNULLを取得し、アクション内で残りを処理します。

次に、Webページで遊んで、同じルーティングを再試行します。今回は「page」パラメータを指定して、値7を指定します。

@Html.RouteLink("Video", "VideoList", new { page = 7 }, new { id = "idVideo", @class = "menu-item" })

期待どおりに機能しますが、何らかの理由で「ページ」を指定せずにルートを使用しようとすると、前回このパラメータに使用された値である7が再び使用されます。

理由はわかりません。このパラメーターのコントローラーにnullを渡すことで、初めて動作することを期待します

必要に応じて詳細をお知らせします。

4

1 に答える 1

2

それがルーティングの仕組みです。RouteLink が現在のリクエスト ルート値からパラメータを取得したくない場合は、パラメータを明示的に設定する必要があります。

@Html.RouteLink("Video", "VideoList", new { page = "" }, new { id = "idVideo" })

これにより、常に/VideoListURL が生成されます。pageパラメータを空の文字列に明示的に設定しない場合(最初の例のように)、ヘルパーはリンクの生成時に現在のリクエスト ルーティング値を分析します。現在の URL が/VideoList/7の場合、ヘルパーはすべてのルート値を保持して を生成し/VideoList/7ます。

于 2012-12-29T10:38:06.450 に答える