2016-11-12 7 views
0

Я весь день боролся с этой ошибкой и прочитал почти каждую статью и пробовал все намеки, которые я нашел, но все еще не в состоянии заставить ее работать.PageMethods не работает с веб-приложением VS2013

Пожалуйста, обратите внимание: EnablePageMethod = истина внутри ScriptManager, метод является публичным и статическим и украшено [WebMethods]

же кодирование работает все идеально с VS2010 и пустым проектом в VS2013, но при использовании с New Проект -> веб -> веб-формы вывод прилагается здесь для справки. Error OutPut

Вот мой код.

Код За:

[System.Web.Services.WebMethod] 
     public static string GetCurrentTime(string name) 
     { 
      return "Hello " + name + Environment.NewLine + "The Current Time is: " 
       + DateTime.Now.ToString(); 
     } 

JavaScript:

<script type="text/javascript"> 
     function ShowCurrentTime() { 
      PageMethods.GetCurrentTime(document.getElementById("<%=txtUserName.ClientID%>").value, OnSuccess); 
      } 
      function OnSuccess(response, userContext, methodName) { 
       alert(response); 
      } 
    </script> 

HTML:

<div> 
     Your Name : 
      <asp:TextBox ID="txtUserName" runat="server"></asp:TextBox> 
     <input id="btnGetTime" type="button" value="Show Current Time" onclick="ShowCurrentTime()" /> 
    </div> 
+0

Можете ли вы вставить код перед страницей, которую используете? Я имею в виду полную разметку вашей страницы. – Sunil

ответ

0

Постарайтесь добавить код [System.Web.Services.WebMethod] и [System.Web.Script.Services.ScriptMethod] на серверную сторону. GetCurrentTime метод.

Также убедитесь, что ваш менеджер сценариев имеет EnablePageMethods="True". В вашем заявлении указано, что вы установили EnablePageMethod = true, который неправильно написан (должен быть множественным).

+0

Пробовал оба из них, но все еще не работает ..! – BilalAhmed

+0

Попробуйте открыть инструменты разработчика для браузера, чтобы узнать, какие ошибки записываются на консоль. Добавление зарегистрированных сообщений об ошибках в ваш вопрос действительно поможет. –

0

Чтобы предотвратить отправку сообщения postback/page, вам необходимо пропустить обработчик события click.

Просто вернуть ложь от вашей яваскрипта функции:

function ShowCurrentTime() { 
    PageMethods.GetCurrentTime(document.getElementById("<%=txtUserName.ClientID%>").value, OnSuccess); 
    return false; // added 
} 
0

Вы должны убедиться, что кнопка не отправляет обратно при вызове PageMethod с клиентской стороны. С вашей текущей разметкой он будет отправлять сообщения назад и вызывать неожиданные эффекты.

Вы должны использовать следующую разметку для кнопки, чтобы она никогда не возвращалась назад. Тогда вызов pagemethod должен работать. В разметке ниже событие нажатия кнопки возвращает ложное значение, поэтому страница никогда не отправляется, а отправляется обратно.

Кроме того, было бы лучше, если бы вы опубликовали разметку своей страницы в полном объеме, так как может возникнуть проблема с разметкой.

<input id="btnGetTime" type="button" value="Show Current Time" 
        onclick="ShowCurrentTime();return false;" />