これが私のルート設定です:
routes.MapRoute(
name: "MyRoute",
url: "Secret/{source}/{display}/{sort}/{tags}/{filter}/{pageSize}/{page}",
defaults: new { controller = "Secret", action = "Index", page = 1, filter = "-", tags = "-" },
namespaces: new[] { "SomeProject.Controllers" }
);
この URL にアクセスすると:
http://localhost:12345/Secret/SourceHere/Gallery/Score/-/-/26
私のビューにはこのマークアップがあります:
<a href="@Url.Action("Index", new { tags = @tagInfo.Tag })">
その結果、リンク内の URL は次のようになります。
http://localhost:12345/Secret?tags=hello
公式ドキュメントは見つかりませんが、SO、Google などで読んだものはすべて、ルート値を保持する必要があると書かれています。ええと、毎回すべてのルート値を指定することで回避しましたが、それは最悪です。
ルート値が保持されないのはなぜですか?
以下の私の答えを編集してください。別の見方/状況では、そこにあるルールは適用されません。ルート値が記憶されているかどうかのルールを絶対に確実に説明できる人はいますか?
ルートは私を夢中にさせます。