为什么我的ActionLink无法正常生成?

时间:2009-10-07 15:04:02

标签: c# asp.net-mvc

我无法弄清楚为什么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 = ""}
            );

2 个答案:

答案 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)%>