在ASP.NET MVC 3 Razor的JqGrid列中添加ActionLink

Yas*_*ser 1 jqgrid html.actionlink asp.net-mvc-3

我正在使用jqGrid与ASP.NET MVC 3和Razor.

我希望在jqGrid中添加2列以及其余列.

我要添加的列是

  • 编辑
  • 删除

这些列值我想成为ActionLink.

如何将ActionLink添加到JqGrid的列?

请指导我这个.

更新1:在@ user1534482的帮助下我尝试了这个但是没有用

colModel: [
    ...
    { name: 'Open', formatter: 'prepareLinks' },
    ...
],

 function prepareLinks(cellvalue, options, rowObject) {
    return "@Html.ActionLink("Open this","Test")";

}
Run Code Online (Sandbox Code Playgroud)

javascript错误消息:

SyntaxError: missing ; before statement
[Break On This Error]   

return "<a href="/SomeController/Test">Open this</a>";

SomeController (line 92, col 41)
Run Code Online (Sandbox Code Playgroud)

tpe*_*zek 5

你应该看一下showlink 预定义格式化程序.

您的问题中没有代码,所以我不知道您的方案有多复杂,但通常这样的代码应该足够了:

<script type="text/javascript">
    jQuery("#gridId").jqGrid({
        colNames: [..., 'Edit', 'Delete'],
        colModel: [
            ...
            {name:'EditAction', formatter:'showlink', formatoptions: { baseLinkUrl: '@Url.Action("Edit")' } },
            {name:'DeleteAction', formatter:'showlink', formatoptions: { baseLinkUrl: '@Url.Action("Delete")' } }
        ],
        ...
    });
</script>
Run Code Online (Sandbox Code Playgroud)

行ID将自动添加(您可以控制idName选项的方式).如果您需要传递一些其他参数,请查看文档中的addParam选项.

UPDATE

有关如何生成最终链接的说明,您可以使用以下公式:

"<a " + ((op.target) ? "target=" + op.target : "") + " href=\"" + op.baseLinkUrl + op.showAction + "?" + op.idName + "=" + rowId + op.addParam + "\">" + cellvalue + "</a>"
Run Code Online (Sandbox Code Playgroud)

对象在哪里,op是您粘贴到jqGrid的数据列的值.formatoptionscellvalue