MVC AJAX JQuery - перехват идентификатора элемента управления, вызвавшего функцию Javascript - PullRequest
0 голосов
/ 01 августа 2011

Я играю и пытаюсь узнать немного больше об AJAX в MVC.

В настоящее время у меня есть следующий блок кода в виде MVC. Идея состоит в том, что при щелчке по ссылке приложение запускает метод FlagInapptiful () в контроллере и отображает сообщение в ссылке, по которой щелкнули, и отключает ссылку.

<script type="text/javascript">
    function flagInappropriate(postId) {
        var url = "Home/FlagAsInappropriate/" + postId;
        $.post(url, function (data) {
            if (data) {
                $('#LinkAppropriate').text('Post has been flagged');
                $('#LinkAppropriate').attr("href", "javascript:void(0);");
            } else {
                alert('Post cannot be flagged');
            }
        });
    }
</script>

<h1>Index</h1>
<a href="javascript:flagInappropriate(1)" id="LinkAppropriate">Flag as inappropriate</a>

В настоящее время это работает и претензий нет. Мой следующий шаг - возможность иметь любое количество ссылок, вызывающих этот метод javascript. Смотрите пример ниже:

<script type="text/javascript">
    function flagInappropriate(postId) {
        var url = "Home/FlagAsInappropriate/" + postId;
        var callingObject = CallingObjectIDGetter();
        $.post(url, function (data) {
            if (data) {
                $('#' + callingObject).text('Post has been flagged');
                $('#' + callingObject).attr("href", "javascript:void(0);");
            } else {
                alert('Post cannot be flagged');
            }
        });
    }
</script>

<h1>Index</h1>
<a href="javascript:flagInappropriate(1)" id="Link1">Flag as inappropriate</a>
<a href="javascript:flagInappropriate(1)" id="Link2">Flag as inappropriate</a>
<a href="javascript:flagInappropriate(1)" id="Link3">Flag as inappropriate</a>
<a href="javascript:flagInappropriate(1)" id="Link4">Flag as inappropriate</a>
<a href="javascript:flagInappropriate(1)" id="Link5">Flag as inappropriate</a>

Учитывая этот сценарий, как мне получить и манипулировать объектом, который вызвал метод Javascript? Короче говоря, что бы я использовал вместо строки var callObject = CallingObjectIDGetter (); ?

Спасибо!

1 Ответ

1 голос
/ 01 августа 2011

Вместо того, чтобы связывать события в вашей разметке, почему бы вам не использовать jQuery и сделать это:

разметка:

<a href="Home/FlagAsInappropriate/1" id="Link1">Flag as inappropriate</a>
... more links go here...

javascript:

function flagInappropriate(callingObject, url) {
    $.post(url, function (data) {
        if (data) {
            $('#' + callingObject).text('Post has been flagged');
            $('#' + callingObject).attr("href", "javascript:void(0);");
        } else {
            alert('Post cannot be flagged');
        }
    });
}

$('a').click(function(e) {
    e.preventDefault();
    flagInappropriate($(this).attr('id'), $(this).attr('href'));
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...