ActionLinkのはそうではないのはなぜRouteLinkは、フレンドリーなURLを生成するのでしょうか?
-
20-09-2019 - |
質問
私はActionLinkの対RouteLinkについて質問があります。
次のルートを考えてみましょう。
routes.MapRoute("Routename1",
"{someEnum}/SpecificAction/{id}/{stringId}",
new { controller = "MyController", id = (int?)null, stringId= (string)null, action = "SpecificAction" },
new { someEnum= "(EnumVal1|EnumVal2)" }
);
私は、URLの一般的なコントローラの一部を形成する列挙の全ての値のための一般的なコントローラを使用するので、変{someEnum}の部分です。例えば、/ EnumVal1 /アクション/及び/ EnumVal2 /アクション/同じコントローラを使用します。しかし、これは問題の一部ではありません。
リンクする、次の2つの方法を考えてみます:
<%=Html.RouteLink("Click me","Routename1", new { id = 32, stringId = "Yatzy" })%>
<%=Html.ActionLink("Click me", "SpecificAction", "EnumVal1", new { id = 32, stringId = "Yatsy" }, null)%>
RouteLinkは次のようになり/ EnumVal1 / SpecificAction / 32 /ヤッツィー
正しいURLを生成しますActionLinkのは/ EnumVal1 / SpecificAction / 32?stringId =ヤッツィー
のように見えるURLを生成し、これはなぜでしょうか?誰かが、私にこれをしてください説明してもらえます。
解決
RouteLink
しかあなたがの指定した1つの経路を使用することができます。 ActionLink
は、それはあなたが意図したかではない一つだかどうか、最初にマッチしたルートを使用します。あなたの2つの例は、おそらく異なる経路に一致しています。
所属していません StackOverflow