ASP.NET MVC4中的Html.ActionLink()无法正确呈现

时间:2012-11-21 09:06:16

标签: asp.net-mvc jqgrid asp.net-mvc-4 jqgrid-asp.net

在浏览器中呈现@ 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(“重启”,“重启”)时,它会像这样正确显示。

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

为什么ASP.NET MVC4会产生未预期的结果?这个问题有什么问题吗?

2 个答案:

答案 0 :(得分:1)

您不应将此行为视为意外。您正在使用以下LinkExtensions.ActionLink方法的重载:

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

所以第二个参数是动作名称,控制器名称默认为当前控制器。

答案 1 :(得分:0)

因为你需要检查Html.ActionLink的参数

我假设你在DashBoardController

第一个para是您希望在链接中显示的字符串 第二个是参数 第三个是控制器

依旧......

您可能希望查看您使用Url.Action()执行的操作,以使此代码更整洁