2012-06-21 69 views
0

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

如果用户输入到一个文本框,并击中添加按钮,我们调用下面的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是通过jQuery变量“@item”构建的)。

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

我在一个完全错误的道路上吗?

回答

1

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

+0

或者他正在打字的文本框可能具有额外的'data- *'属性,如'data-url',它的值是生成的服务器端的url –