ActionLinkのはそうではないのはなぜRouteLinkは、フレンドリーなURLを生成するのでしょうか?

StackOverflow https://stackoverflow.com/questions/1920593

質問

私は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つの例は、おそらく異なる経路に一致しています。

明確に役立つだろうの

フィル・ハークのルーティング・デバッガこれます。

scroll top