вызов действия контроллера из JavaScript - PullRequest
0 голосов
/ 07 августа 2009

У меня есть ссылка, которая вызывает 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 Ответ

2 голосов
/ 07 августа 2009

Использование:

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

для генерации только фактического URL (без <a href="..." >...</a>). Таким образом, вы можете просто отобразить это в своем javascript и использовать 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, - это оставить ссылку как есть и затем сделать это:

$("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;
    });
});

, который получает URL-адрес непосредственно со ссылки (т. Е. Сгенерированного вашим исходным <%= Html.ActionLink...).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...