0

私は.Netが初めてです。私は最初のプロジェクトの終わりに近づいており、私を悩ませている些細な問題に遭遇しました。MVC 3、Razor、C#、および VisualStudio 2010 を使用しています。

以下は、ユーザーを別の RDLC レポートにリダイレクトするための Razor コードです。

@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
    );
}

これらは、新しいプロジェクトで作成される既定のルートにすぎません。

どんな助けでも大歓迎です。

4

2 に答える 2

2

Html.ActionLinkシグネチャ(HtmlHelper, String, String, Object, Object)を持つ間違ったオーバーロードを使用しています。

3 番目のパラメーター"Reports"は rootvalues オブジェクトとして解釈され、フレームワークはそのプロパティを取得しようとします。文字列"Reports"には、7 に等しい 1 つのプロパティ Lenght があります。

必要なのは、署名付きのオーバーロードです(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 />

null4 番目のパラメーターとして s に注意してください。

于 2012-06-04T20:35:43.617 に答える
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 プロパティを区別できるように、ルート データ値が必要です。

于 2012-06-04T20:35:57.930 に答える