私は非常に単純なサイトでAnchorLinkを使用していますが、ちょうど2つのルートが定義されていて、1つの標準ルートと別のエリアルートがadmin/{controller}/{action}/{id}
です。 AnchorLinkは、現在の要求{ID}が含まれ、すなわちせずにリンクをレンダリングしているASP.NET MVC AnchorLinkはルート値を使用していませんか?
@Html.AnchorLink("Confirm", "Confirm")
:私が使用していることを考慮すると
/admin/release/push/255
:私のようなURLでよ。 ! RouteValuesを調べると{id}がそこにあることがわかります。私は明示的に示すように、TEH現在のリクエストからのルート値を渡す場合:
@Html.AnchorLink("Confirm this release", "Confirm", Url.RequestContext.RouteData.Values)
そして、それは動作しますが、私はURL /admin/release/confirm/255
を取得します。なぜ私は現在の要求ルート値を渡す明示的なバージョンが動作しますが、私は現在の要求ルート値をピックアップすると思ったルート値引数なしの暗黙的なバージョンはありません?私は上記が解決策であることを知っていますが、それは醜いですし、ルート値のないAnchorLinkが期待どおりに機能していない理由がいくつかありますか?
MVCがあなたの言うことをやると思いました。どのルートがコントローラ/アクションを提供しているかを判断し、(オプションの)idパラメータを持っていることを確認し、現在のリクエスト値から供給します。私は様々な場所でこれを読んできました。そして、他のほとんどのメッセージは、リンクに追加されたパラメータの問題が「意図していない」ときに「苦しむ」ようです。 – jdh