2012-06-21 67 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 –