RouteLink と ActionLink について質問があります。
次のルートを検討してください
routes.MapRoute("Routename1",
"{someEnum}/SpecificAction/{id}/{stringId}",
new { controller = "MyController", id = (int?)null, stringId= (string)null, action = "SpecificAction" },
new { someEnum= "(EnumVal1|EnumVal2)" }
);
奇妙な {someEnum} 部分は、URL の典型的なコントローラー部分を形成する列挙型のすべての値に対して汎用コントローラーを使用しているためです。たとえば、/EnumVal1/Action/ と /EnumVal2/Action/ は同じコントローラーを使用します。ただし、それは問題の一部ではありません。
次の 2 つのリンク方法を検討してください。
<%=Html.RouteLink("Click me","Routename1", new { id = 32, stringId = "Yatzy" })%>
<%=Html.ActionLink("Click me", "SpecificAction", "EnumVal1", new { id = 32, stringId = "Yatsy" }, null)%>
RouteLink は正しい URL を生成します。これは /EnumVal1/SpecificAction/32/Yatzy になります。
ActionLink は /EnumVal1/SpecificAction/32?stringId=Yatzy のような URL を生成します
どうしてこれなの?誰かが私にこれを説明してくれませんか。