我无法弄清楚为什么ActionLink在这个实例中没有正确生成url。
我有一个名为Activity的控制器和一个名为Show的视图。从那里我正在尝试创建一个指向ServiceCall控制器的链接,显示视图。从ServiceCall的任何视图中都可以正常工作:
<%= Html.ActionLink(Html.Encode(sc.CallNumber), "Show", new { callNumber = "100" })%>
从“活动”视图中,这不起作用:
<%= Html.ActionLink(Html.Encode(sc.CallNumber), "Show", "ServiceCall", new { callNumber = "100" })%>
正在生成http://localhost/Activity/Show/12?Length=11
之类的链接 经过一番研究后,我决定试试这个:<%= Html.ActionLink(Html.Encode(sc.CallNumber), "Show", new { controller = "ServiceCall" }, new { callNumber = "100" })%>
这给了我一个http://localhost/ServiceCall/Show的网址,但没有给出callNumber。有任何想法吗?
这是我的路线:
routes.MapRoute(
"ShowCall",
"ServiceCall/Show/{callNumber}",
new {controller = "ServiceCall", action = "Show", callNumber = ""}
);
答案 0 :(得分:6)
我认为你没有调用正确的覆盖。你需要:
<%= Html.ActionLink(
sc.CallNumber,
"Show",
"ServiceCall",
new { callNumber = "100" },
null) %>
注意额外的null
。我最近遇到过类似的问题。
编辑:此外,我确定您不需要Html.Encode
。它已被编码。
答案 1 :(得分:0)
试试这个:
<%= Html.ActionLink(Html.Encode(sc.CallNumber), "Show", "ServiceCall", new { callNumber = "100" }, null)%>