работа с событиями jquery в ASP.NET MVC - PullRequest
1 голос
/ 01 мая 2009

Я постараюсь сделать это максимально простым.

Я только начал работать с jquery и не знаю, как лучше всего делать то, что я хочу, или я совершенно не прав. Я пытаюсь сделать простую кнопку «рекомендовать», чтобы рекомендовать статьи, но я хочу, чтобы, как только пользователь рекомендовал одну статью, он не может рекомендовать ее снова.

Пока у меня есть кнопка, работающая и отправляющая данные с помощью функции $ .post, а затем, когда пользователь проголосовал, я отключаю кнопку, чтобы он не мог снова публиковать данные. Проблема в том, что если он перезагружает страницу, кнопка снова активируется (я контролирую этот сервер, но я также хочу отключить кнопку клиента).

Какой наилучший подход можно обнаружить из jquery, если пользователь порекомендовал одну статью в функции .ready, чтобы не связывать событие кнопки?

Я могу придумать два жизнеспособных решения, но ни одно из них не кажется мне достаточно чистым, во-первых, было бы дать идентификатор направления кнопке в представлении, если рекомендация загружена моделью, чтобы событие никогда не связывалось. Или другое решение - сделать еще один вызов ajax в документе. Уже готов проверить, не была ли статья уже рекомендована.

Многие сайты имеют такое поведение (например, YouTube), поэтому должен быть лучший способ сделать это.

Код:

это моя "кнопка" в представлении:

<% // Display the button %>
<%= Html.Image("/ECA/Content/Images/notchecked.png", new { id = "recommend"  })%>

И моя jquery-привязка:

    //Add click event to recommend the article
    $("img[id^='recommend']").click
    (
            function() {

                UpdateVote( 2);
            }
    );

Моя функция обратного вызова:

var UpdateVoteCallBack=function(data) {
     $("#recommend")
    .attr('src','/ECA/Content/Images/checked.png');
     $("#recommend").unbind('click');

}

Ответы [ 2 ]

2 голосов
/ 01 мая 2009

Когда вы рисуете исходную страницу сервера, не рисуйте нажимаемые кнопки для статей, которые уже рекомендованы - вместо этого нарисуйте ярлык с надписью «Вам нравится это!» или что-то в этом роде.

Пусть ваш клиентский jQuery заменит кнопку с этой меткой в ​​обратном вызове, вместо того, чтобы просто удалить обработчик кликов - это даст вашему пользователю некоторую обратную связь, что его рекомендации были приняты.

Наконец - убедитесь, что для клиентов без Javascript фактическое нажатие кнопки или отправка формы обрабатывается на стороне сервера, их рекомендация подтверждается, и когда они получают полученную страницу, вместо кнопки появляется «Мне нравится это».

Помните, что вы всегда должны использовать jQuery et al для улучшения поведения вашего сайта; сделайте так, чтобы сначала не работал AJAX, а затем добавьте колокольчики и свистки.

1 голос
/ 01 мая 2009

Я бы проверил на стороне сервера, чтобы убедиться, что статья рекомендована, и отправил соответствующий класс / идентификатор в представление, и имел бы функцию jquery для отключения любых кнопок с отмененным классом / идентификатором.

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