从javascript调用控制器动作

时间:2009-08-07 02:19:05

标签: jquery asp.net-mvc

我有一个调用javascript来确认的链接:

$("a.delete").click(function() {
    var name = $(this).parent().prev('td').prev('td').text();
    jConfirm('Are you sure you want to delete the following member:' + name, 'Member Delete', function(r) {
    });
});

我希望,如果用户单击“是”以调用类似于此代码的控制器操作:

 <%= Html.ActionLink("Delete", "Delete", new { id = item.Mail_ID })%>

我如何获得jquery确认弹出窗口的功能,但在使用actionlink之后仍然可以获得相同的结果。

1 个答案:

答案 0 :(得分:2)

使用:

<%= Url.Action("Delete", "Delete", new { id = item.Mail_ID }) %>

仅生成实际网址(不包含<a href="..." >...</a>)。这样你就可以将它渲染到你的javascript&amp;使用window.location,因此您的javascript变为(假设jConfirm末尾的函数是接受时的回调):

$("a.delete").click(function() {
    var name = $(this).parent().prev('td').prev('td').text();
    jConfirm('Are you sure you want to delete the following member:' + name, 'Member Delete', function(r) {
        window.location = <%= Url.Action("Delete", "Delete", new { id = item.Mail_ID }) %>;
    });
});

另一个替代方案,如果他们没有启用javascript,它将仍然可以工作(没有确认)将是保留链接,因为它是&amp;然后这样做:

$("a.delete").click(function() {
    var url = $(this).attr("href");
    var name = $(this).parent().prev('td').prev('td').text();
    jConfirm('Are you sure you want to delete the following member:' + name, 'Member Delete', function(r) {
        window.location = url;
    });
});

直接从链接抓取网址(即原始<%= Html.ActionLink...生成的网址)。