在我的应用程序中,我有一些看起来像这样的表数据:
<table>
<tr>
<th>Actions</th>
<th>Text</th>
</tr>
@foreach( var item in Model.Items ) {
<tr>
<td>
@Html.ActionLink("Edit", "Edit", "Items", new { @class = "edit-item-link", id = "edit-item-" + item.Id })
@Html.ActionLink("Delete", "Delete", "Items", new { @class = "delete-item-link", id = "delete-item-" + item.Id })
</td>
<td>@item.Text</td>
</tr>
}
</table>
视图将创建如下所示的操作链接:
<a href="/Items/Edit/1" class="edit-item-link" id="edit-item-1">Edit</a>
然后我使用jquery来覆盖操作:
$('.edit-item-link').live('click', function(e) {
e.preventDefault();
$.ajax({
type: 'POST',
url: ''
dataType: 'json'
});
});
当我将URL传递给ajax调用时,我想使用以下网址:/Items/GetItemJson/1
如何在不使用正则表达式的情况下从网址获取id值?
我不想更改操作链接中的网址,因为我将以其他方式使用它。
答案 0 :(得分:2)
最简单的方法是使用data-*
属性
@Html.ActionLink("Edit", "Edit", "Items", new { @class = "edit-item-link", data_id=item.Id, id = "edit-item-" + item.Id })
哪个应该呈现以下内容:
<a href="/Items/Edit/1" class="edit-item-link" id="edit-item-1" data-id="1">Edit</a>
与jQuery相比,您可以使用.data()
$('.edit-item-link').live('click', function(e) {
e.preventDefault();
var theId = $(this).data("id");
$.ajax({
type: 'POST',
url: ''
dataType: 'json'
});
});
答案 1 :(得分:0)
使用您现有的标记,您可以从ID中获取它:
var currentId = $(this).attr('id');
var id = currentId.substring(10);