PageMethods не определен - PullRequest
       34

PageMethods не определен

4 голосов
/ 28 апреля 2011

Я настраиваю PageMethods для доступа к коду на стороне сервера, используя JavaScript. Я получаю сообщение об ошибке «PageMethods не определен» при отладке с использованием Firebug. код на стороне сервера также не запускается.

Я настроил свой диспетчер сценариев "EnablePageMethods" в значение true. Мой метод является общедоступным и статическим, и для него также настроен атрибут WebMethod. Тем не менее я получаю вышеуказанную ошибку. Может ли это быть из-за того, что менеджер скриптов находится на главной странице верхнего уровня, которая имеет две дочерние главные страницы, а затем моя страница называется:

т.е.

Главная главная страница (с менеджером сценариев) -> Основная главная страница -> Вторичная главная страница -> Моя страница -> Мой элемент управления пользователя (с WebMethod)

Возможно ли, что иерархия вызывает эту проблему?

Это веб-метод

 [System.Web.Services.WebMethod]
public static void AddNote(string t)
{
    int propid = 1; 
    if (propid > 0)
    {
     //Call my method
    }
}

это мой код JavaScript:

  function editNodes(t) {
    alert('test1');
    alert(t);
    PageMethods.AddNote(t,OnSuccess,OnFailure);
    alert('method called');
}
function OnSuccess() { 
    alert('Success'); 
    if (!navigator.appName == 'Microsoft Internet Explorer') {
        window.location.href = window.location.href;
    }

}
function OnFailure(error) {
    alert('Error:' + error);
}    

вот где я это называю:

   <a href="#" class="btngeneral" onclick="javascript:editNodes(2);">Save</a>

Ответы [ 3 ]

16 голосов
/ 28 апреля 2011

Методы страницы не работают ни в главных страницах, ни в пользовательских элементах управления.

Если вы переместите метод на одну страницу выше уровня, он должен работать.

Никогда не мог получить однозначного ответа на этот вопрос.

Я подозреваю, что это связано с тем, что страницы aspx наследуются от класса Page, а элементы управления ascx наследуются от класса UserControl.Что касается того, почему в этом я не слишком уверен.

Лично я бы использовал страницу универсального обработчика (.ashx) и вызывал бы это через javascript.

11 голосов
/ 08 июня 2012

set EnablePageMethods = "true"

 <ajaxToolkit:ToolkitScriptManager ID="scriptManager" 
                               runat="server" 
                               AsyncPostBackTimeout="99999999"
                               EnablePageMethods="true" />

Я надеюсь, что это сработает для вас

4 голосов
/ 28 апреля 2011

Насколько я понимаю, PageMethods в usercontrol не поддерживается, и потоки ниже, кажется, подтверждают, что

http://forums.asp.net/p/977525/1242935.aspx

ASP.NET AJAX Page методы из UserControl

Но я думаю, что может быть обходной путь (не уверен, насколько это эффективно в вашем сценарии).Вы можете написать OneLine PageMethod в коде страницы, который будет вызывать метод страницы Controls.Теперь вы можете вызывать метод вашей страницы из aspx и все готово к работе.

Или вы можете использовать этот альтернативный Альтернативный способ использования метода страницы внутри пользовательского элемента управления asp.net

...