2009-10-07 111 views
2

我不明白为什么ActionLink在这个实例中没有正确生成url。为什么我的ActionLink无法正确生成?

我有一个名为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" })%> 

这给了我一个url的http://localhost/ServiceCall/Show但不给callNumber。有任何想法吗?

这是我的路线:

routes.MapRoute(
      "ShowCall", 
      "ServiceCall/Show/{callNumber}", 
      new {controller = "ServiceCall", action = "Show", callNumber = ""} 
      ); 

回答

0

试试这个:

<%= Html.ActionLink(Html.Encode(sc.CallNumber), "Show", "ServiceCall", new { callNumber = "100" }, null)%> 
6

我想你是不是调用正确的覆盖。您需要:

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

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

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

相关问题