0

ブラウザで @Html.ActionLink をレンダリングする際の予期しない結果。以下は、リンク列を表示するために jqGrid に記述したコードです。

{ name: 'Restart',
                         formatter: function (cellvalue, options, rowObject) {
                             var x = '@Html.ActionLink( "Restart", "Dashboard", new { requestId ="myId"  }, new { onclick = "return confirm('Are you sure to Restart?');" })';
                             return x.replace("myId",rowObject[8]);
                         }, align: 'left', width: 100
                     } 

ブラウザでレンダリングした後、このように表示されました

<a href="/DashBoard/Dashboard?requestId=2362e13b-e4fc-4140-b7ad-1bd0e82b6bde" onclick="return confirm('Are you sure to Restart?');">Restart</a>

上記のコードで @Html.ActionLink( "Restart", "Restart") を置き換えると、このように正しく表示されます。

 <a href="/Dashboard/Restart?requestId=2362e13b-e4fc-4140-b7ad-1bd0e82b6bde" onclick="return confirm('Are you sure to Restart?');">Restart</a>

ASP.NET MVC4 が予期しない結果を生成するのはなぜですか? この問題の修正はありますか?

4

2 に答える 2

1

この動作を予期しないものと見なすべきではありません。LinkExtensions.ActionLinkメソッドの次のオーバーロードを使用しています。

public static MvcHtmlString ActionLink(
    this HtmlHelper htmlHelper,
    string linkText,
    string actionName,
    Object routeValues,
    Object htmlAttributes
)

したがって、2 番目のパラメーターはアクション名であり、コントローラー名はデフォルトで現在のコントローラーになります。

于 2012-11-21T09:12:17.370 に答える
0

Html.ActionLink のパラメーターを確認する必要があるためです。

あなたはDashBoardControllerにいると思います

最初の para はリンクに表示する文字列です 2 番目はパラメーターです 3 番目はコントローラーです

等々...

このコードを少しきれいにするために、Url.Action() を使用して何をするかを確認することをお勧めします。

于 2012-11-21T09:12:38.847 に答える