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

StackOverflow https://stackoverflow.com/questions/611245

Вопрос

Я использую 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.

Это было полезно?

Решение 2

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

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

внутри < system.web > раздел.

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

Другие советы

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

<asp:UpdatePanel ID="upMyPanel" UpdateMode="Conditional" runat="server">
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top