在javascript中创建MVC操作链接

时间:2012-06-21 16:25:40

标签: jquery asp.net-mvc

MVC / jquery的新手,在动态创建链接时遇到问题。

如果用户输入文本框并点击添加按钮,我们会调用以下javascript:

    addItem: function (button) {
        var text = this.$text.val();
        var $newCell = $('<td>');
        $newCell.text(text);
        var $hidden = $('<input type="hidden" />');
        $hidden.attr('name', this.name);
        $hidden.val(text);
        $newCell.append($hidden);
        $newCell.append('</td>');
        var $newLinkCell = $('<td>');
        var $newLink = $('<a href="#" id="newLink">EPA Action Link</a>');
        var $newLinkTarget = '<%: @Html.ActionLink("EPA Action Link", "EPARedirect", new { EPAId = "' + text + '" }, new { target = "_blank" }) %>';
        $newLink.attr("href", $newLinkTarget);
        $newLinkCell.append($newLinkTarget);
        $newLinkCell.append('</td>');
        var $html = $('<tr>');
        $html.append($newCell);
        $html.append($newLinkCell);
        $html.append('</tr>');
        this.$table.append($html);

        this.initItem($newCell);
        this.$text.val('');
    }

所以我正在做的是找到一个表,然后添加一个带有两个单元格的新行:左边显示数据,右边显示一个带有该数据的链接作为参数。

对于现有项目,我在cshtml文件中有相同的ActionLink(除了EPAId是通过“@item”的jquery变量构建的)。

无论如何,我一直在试图弄清楚如何在我的add函数中动态构建相同类型的链接。我得到的只是$ newLinkTarget的文字。我想这是有道理的,它不是通过服务器的jquery渲染推送的。

我在这里走错了路吗?

1 个答案:

答案 0 :(得分:1)

您无法生成链接客户端,因为您需要考虑客户端不可用的路由。您需要使用@ Url.ActionLink生成基本Url,它存储在JS变量中,然后在客户端上用作基础,或者使用可以调用的Ajax方法为您生成路径。