2016-09-11 124 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