我不明白为什么下面的第2号链接不起作用:
routes.MapRoute(
name: "GreetingDefault",
url: "Greeting/{action}/{id}",
defaults: new { controller = "Greeting", action = "Index", id = UrlParameter.Optional}
)
;
链接:
1 @Html.ActionLink("ActionLink", "Index", "Greeting", new {area = "" }, null)
2 @Html.RouteLink("RouteLink", "GreetingDefault")
3 @Html.RouteLink("Greet-RouteLink-DisplayGreeting", "GreetingDefault",
new { action = "DisplayGreeting", parameter="abc" })
点击第3个链接后,这是HTML:
<a href="/Greeting">ActionLink</a>
<a href="/Greeting/DisplayGreeting">RouteLink</a>
<a href="/Greeting/DisplayGreeting?parameter=abc">Greet-RouteLink-DisplayGreeting</a>
然后当我点击链接2时,它会停留在链接3页面上。 。而不是去 到&#34;索引&#34;在指定路线中指定。我必须这样做才能使它发挥作用:
2 @Html.RouteLink("RouteLink", "GreetingDefault",
new { action = "Index"} )
我在这里看不到什么?感谢
答案 0 :(得分:1)
原因是RouteLink
选择当前操作并在结果网址中使用它。在您的情况下,您位于第3页,这意味着您当前的网址为/Greeting/DisplayGreeting?parameter=abc
,因此当前操作为DisplayGreeting
。这是RouteLink
使用的那个。如果您在页面上,请说/Greeting/AnyOtherAction
,RouteLink
会使用AnyOtherAction
进行操作。
底线 - RouteLink
在使用当前操作时不使用为路由定义的默认操作。所以基本上你对动作的明确覆盖做了什么是正确的方法。