MVC对话框 - 从动作链接获取Id值

时间:2011-10-13 14:31:17

标签: c# asp.net-mvc

在我的应用程序中,我有一些看起来像这样的表数据:

<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值?

我不想更改操作链接中的网址,因为我将以其他方式使用它。

2 个答案:

答案 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);