为什么RouteLink生成友好的URL,而ActionLink的不?
-
20-09-2019 - |
题
我有关于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 /动作/和/ EnumVal2 /动作/使用相同的控制器。这不是问题的一部分,但是。
考虑连接的以下两种方式:
<%=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 /掷骰子
在ActionLink的产生看起来像/ EnumVal1 / SpecificAction / 32?的StringID =掷骰子
的URL这是为什么?可能有人给我讲解一下,谢谢。
解决方案
RouteLink href="http://blogs.teamb.com/craigstuntz/2009/03/18/38085/" rel="nofollow noreferrer">永远只能使用指定中的一个路径。 ActionLink
将使用第一个匹配的路由,无论是你有意或无意的一个。你的两个例子都可能匹配不同的路线。
菲尔哈克的路由调试将有助于澄清此
不隶属于 StackOverflow