2016-09-11 131 views
0

如何從actionlink獲取屬性到jquery?從actionlink獲取屬性jquery

@Html.ActionLink("Edit contact", "Edit", "Contact", new { Area = "Customers", contactId = -1 }, new { @id="EditContact", @class = "btn btn-info" }) 

我希望在按下聯繫人時動態更新contactId

$(document).on('click', '#contacts .list-group-item', function(e) { 
     var id = (this.id); 
     var elem = $('#EditContact'); 
     var newUrl = elem.prop('href').replace('-1', id); 
     elem.prop('href', newUrl); 
    }); 

此代碼的工作原理,但只是一次,因爲-1的變化。所以我需要收集contactId並將其保存爲一個變量。

$(document).on('click', '#contacts .list-group-item', function(e) { 
       var id = (this.id); 
       var elem = $('#EditContact'); 
       var oldId = elem.attr('contactId'); 
       var newUrl = elem.prop('href').replace('oldId', id); 
       elem.prop('href', newUrl); 
    }); 

我試過這個,但是oldId是未定義的。我如何收集contactId

回答

1

你可以做的是,不是保留-1作爲路由值,而是生成沒有路由值的鏈路。所以它將只是基礎url(沒有contactId的查詢字符串)。點擊鏈接後,您可以使用此基礎網址並追加該ID並生成新網址並導航至該網址。

@Html.ActionLink("Edit contact", "Edit", "Contact", new { Area = "Customers" }, 
             new { @id="EditContact", @class = "btn btn-info" }) 

而在點擊事件中,請確保阻止默認的點擊事件行爲。

$(function() { 

    $(document).on('click', '.list-group-item', function (e) { 
     e.preventDefault(); 
     var id = (this.id); 
     var newUrl = $('#EditContact').attr("href") + '?contactId=' + id; 
     window.location.href = newUrl; 
    });  

}); 

另一個更好的解決方案是,當你建立與類環「列表組項目」的項目,你可以添加URL中的數據屬性。

例如

@foreach(var item in SomeCollection) 
{ 
    <div class="list-group-item" data-url="@Url.Action("Edit", "Contact", 
              new { Area = "Customers" ,contactId=item .Id})"> 
     Some Name of the Item in the loop 
    </div> 
} 

,現在,這個被點擊時,讀取URL數據屬性,並使用該導航。

$(function() { 

    $(document).on('click', '.list-group-item', function (e) { 
     e.preventDefault();   
     window.location.href = $(this).data("url"); 
    });  

}); 
+0

在您的第一個解決方案中,您將'?contactId'部件附加到'href'屬性。當另一個列表項被點擊時,你會再次追加,這將導致一個無效的URL。但你的第二個解決方案是正確的:) – QuantumHive

+0

編號我追加contactId和它的基值url(它沒有url中的聯繫人ID(我沒有在路由值中傳入聯繫人ID),我不是用這個新的URL更新鏈接的href值,它保持不變(沒有聯繫人id查詢字符串的基礎url),所以它仍然可以工作 – Shyju

+0

我的不好,你說得對。 .href',我已經讀過了這個部分,但是仍然,OP在他的問題示例中設置了它的html元素的'href',所以最好在一些'data- *'屬性,例如在他的編輯動作鏈接中。 – QuantumHive