0

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 渲染来推动的。

我在这里走错了路吗?

4

1 回答 1

1

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

于 2012-06-21T16:30:08.227 回答