PageMethod больше не вызывается после добавления UpdatePanel на страницу

Я использую asp.net ajax версии 1.0 на asp.net 2.0. (Я пока не могу перейти на 3.5)

У меня был PageMethod, который вызывал Javascript. Это работало отлично, пока я не добавил UpdatePanel в другую часть страницы. Теперь, когда я запускаю страницу с включенной отладкой, точка останова в методе страницы никогда не вызывается. когда я смотрю в firebug на то, что возвращается при вызове сообщения в PageMethod, я замечаю, что возвращается вся страница aspx, а не только значение вызовов. Что я сделал?

Вот Javascript-вызов PageMethod:

function EndRequestHandler(sender, args) {
    $('#selectedCHK').change(
        function() {
            var chkedInput = $('#selectedCHK');
            var networkRead = chkedInput[0].checked;
            PageMethods.ChangeSelectedNetworkReadFlag(routeNum, 
                                                      networkRead, 
                                                      function(msg) { alert(msg);  });
        }
    );
}
$(document).ready(function() {
    Sys.WebForms.PageRequestManager.getInstance().add_endRequest(EndRequestHandler);
}

Смысл вызова функции EndRequestHandler в конце каждого запроса заключается в том, что элемент с идентификатором '#selectedCHK' находится внутри панели обновления, и событие необходимо устанавливать каждый раз при обновлении UpdatePanel.


person minty    schedule 04.03.2009    source источник
comment
Не могли бы вы подробнее рассказать о том, откуда вызывается метод страницы и как? Может быть, образец кода?   -  person Andrew Rollings    schedule 04.03.2009
comment
@Андрей; Спасибо за совет Я только что добавил код.   -  person minty    schedule 04.03.2009


Ответы (2)


Попробуйте установить условный режим обновления на панели обновлений. Похоже, что панель обновлений перехватывает ваши события.

<asp:UpdatePanel ID="upMyPanel" UpdateMode="Conditional" runat="server">
person RSolberg    schedule 04.03.2009
comment
Спасибо @RSolberg за вашу помощь, я не знаю об UpdateMode. - person minty; 04.03.2009

Я понял это, и это была проблема конфигурации. В частности, мне нужно было добавить:

<httpModules>
    <add name="ScriptModule" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
</httpModules>

внутри раздела ‹system.web›.

Я думал, что правильно настроил сайт, но решил просмотреть документацию < / a> шаг за шагом.

person minty    schedule 04.03.2009