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

Mik*_*osa 2 c# asp.net-mvc

我无法弄清楚为什么ActionLink在这个实例中没有正确生成url.

我有一个名为Activity的控制器和一个名为Show的视图.从那里我正在尝试创建一个指向ServiceCall控制器的链接,显示视图.从ServiceCall的任何视图中都可以正常工作:

<%= Html.ActionLink(Html.Encode(sc.CallNumber), "Show", new { callNumber = "100" })%>
Run Code Online (Sandbox Code Playgroud)

从"活动"视图中,这不起作用:

<%= Html.ActionLink(Html.Encode(sc.CallNumber), "Show", "ServiceCall", new { callNumber = "100" })%>
Run Code Online (Sandbox Code Playgroud)

它生成一个像http:// localhost/Activity/Show/12?Length = 11的链接

经过一番研究,我决定尝试这个:

<%= Html.ActionLink(Html.Encode(sc.CallNumber), "Show", new { controller = "ServiceCall" }, new { callNumber = "100" })%>  
Run Code Online (Sandbox Code Playgroud)

这给了我一个http:// localhost/ServiceCall/Show的url,但没有给出callNumber.有任何想法吗?

这是我的路线:

routes.MapRoute(
            "ShowCall",
            "ServiceCall/Show/{callNumber}",
            new {controller = "ServiceCall", action = "Show", callNumber = ""}
            );
Run Code Online (Sandbox Code Playgroud)

Jan*_*ich 6

我认为你没有调用正确的覆盖.你需要:

<%= Html.ActionLink(
    sc.CallNumber,
    "Show",
    "ServiceCall",
    new { callNumber = "100" },
    null) %>
Run Code Online (Sandbox Code Playgroud)

注意额外的null.我最近有类似的问题.

编辑:另外,我相信你不需要Html.Encode.它已经被编码了.