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渲染推送的。
我在这里走错了路吗?
答案 0 :(得分:1)
您无法生成链接客户端,因为您需要考虑客户端不可用的路由。您需要使用@ Url.ActionLink生成基本Url,它存储在JS变量中,然后在客户端上用作基础,或者使用可以调用的Ajax方法为您生成路径。