2012-06-04 52 views
0

我是.Net新手。我接近我的第一個項目的結尾,並且遇到了困擾我的一個微不足道的問題。我使用MVC 3,剃刀,C#和VisualStudio的2010C#MVC 3使用不需要的參數生成鏈接

以下是剃刀代碼,我有將用戶重定向到不同的RDLC報告:

@Html.ActionLink("Length of stay for all data packages - summary", "RptLngthStay", "Reports", new { @class = "link" })<br /> 
@Html.ActionLink("Packages denied registration by WHS reviewers", "RptPkgsDenied", "Reports", new { @class = "link" })<br /> 
<...> 

生成下面的HTML:

<a class="link" href="/reg_pkgs/Reports/RptLngthStay?Length=7">Length of stay for all data packages - summary</a><br /> 
<a class="link" href="/reg_pkgs/Reports/RptPkgsDenied?Length=7">Packages denied registration by WHS reviewers</a><br /> 
<...> 

我的問題是,參數「長度= 7」從哪裏來?沒有一個控制器需要參數,更不用說一個名爲「長度」的參數。它不會影響我的任何代碼如何運行,但在地址欄中看到它困擾着我。

這裏是路線在我的Global.asax.cs文件:

public static void RegisterRoutes(RouteCollection routes) 
{ 
    routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); 
    routes.MapRoute(
     "Default", // Route name 
     "{controller}/{action}/{id}", // URL with parameters 
     new { controller = "PackageTrack", action = "TrackSearch", id = UrlParameter.Optional } // Parameter defaults 
    ); 
} 

他們只是用一個新項目創建的缺省路由。

任何幫助將不勝感激。

回答

2

您正在使用Html.ActionLink的錯誤超載,它的簽名爲(HtmlHelper, String, String, Object, Object)

其中第三個參數"Reports"被解釋爲rootvalues對象,並且框架試圖獲取它的屬性。和字符串"Reports"有一個屬性Lenght這等於7

你需要的是帶有簽名的過載(HtmlHelper, String, String, String, Object, Object)

你的代碼更改爲:

@Html.ActionLink("Link text", "RptLngthStay", "Reports", null, new { @class = "link" })<br /> 
@Html.ActionLink("Link text", "RptPkgsDenied", "Reports", null, new { @class = "link" })<br /> 

注意null S作爲第四個參數。

+0

修復它。我覺得自己像個白癡。我在整個程序的其餘部分使用了空值,並在這裏設法想念他們。萬分感謝。 – War2d2

1

您應該使用

@Html.ActionLink("Packages denied registration by WHS reviewers", "RptLngthStay", "Reports", null, new { @class = "link" }) 

@Html.ActionLink("Packages denied registration by WHS reviewers", "RptLngthStay", "Reports", new {}, new { @class = "link" }) 

的HTML幫助需要有路由數據值,以便它可以在的RouteData和htmlAttribute性質區分。

+0

謝謝,這也是正確的答案,但@nemesv首先回答。如果可以的話,我會給你們兩個勾號。 – War2d2

+0

哈哈,不用擔心:-) – workoholic