ASP.NET 4.0 - вызов метода на стороне сервера из метода на стороне клиента - PageMethods

Я пытаюсь получить доступ к методу на стороне сервера со стороны клиента (это просто вызов метода сервера из javascript). Я использую .NET 4.0 Visual Studio 2010 Ultimate. Я создаю веб-элемент управления (ascx). У меня есть страница ascx (элемент управления html) и страница ascx.cs: ascx следующий:

<%@ Control Language="C#" AutoEventWireup="true" CodeFile="BoxButton.ascx.cs" Inherits="ATB.Controls._BoxButton" %>

<asp:ScriptManager ID="SM_ScriptManager" runat="server" EnablePageMethods="true" />
<script type="text/javascript">
    function handle() {
        PageMethods.manageHandler();
    }
</script>
<span id="BoxButton_HtmlSpan" runat="server" onclick="handle();" style="background-color:#efefef;border-style:solid;border-width:1px;border-color:#cccccc;height:25px;text-align:center;padding:3px 3px 3px 3px;font-family:Arial, Helvetica, sans-serif;font-size:12px;font-style:normal;color:#333333;line-height:15px">
    <asp:Label runat="server" Text="Button" id="Text_Label"></asp:Label>
</span>

А вот файл ascx.cs (просто распечатываю функцию):

[System.Web.Services.WebMethod]
   public static string manageHandler() {
   int i = 0;
   System.Console.WriteLine("Ciao");
   return "Hello";
}

Что ж, как вы можете видеть, я пытаюсь решить свою проблему с помощью методов страницы, что ж, это не работает, и я всегда getPageMethods не определен диспетчером времени выполнения JScript. Что ж, возможно ли, что PageMethods недоступны в .net 4.0?

В любом случае, есть ли другой подход к решению проблемы, связанной с вызовом метода на стороне сервера из скриптов на стороне клиента? Я понял, что pagemethods - это не что иное, как веб-сервис, и это немного беспокоит меня, когда я думаю о безопасности в моем веб-приложении.

РЕДАКТИРОВАТЬ:

Что ж, похоже, что jQuery - допустимое решение ... но может ли он позволить мне вызвать метод на стороне сервера? Я так и ожидал, потому что мы говорим об ajax, верно?

ИЗМЕНИТЬ 2:

Ах ... Другой вопрос ... Я попытался использовать веб-метод, но он не работает, и я получаю ошибки, не находя PageMethods в javascript, в то время как я устанавливаю диспетчер сценариев и атрибут метода WebMethod, как указано ...

Это потому что я работаю внутри ascx ?????? возможный????? Тогда даже jQuery не поможет ....


person Andry    schedule 26.07.2010    source источник
comment
проверьте этот образец: tugberkugurlu.com/archive/ может помочь.   -  person tugberk    schedule 17.12.2011


Ответы (3)


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

person John Saunders    schedule 26.07.2010
comment
Ну, я подумал об этом, но не обнаружил никаких ограничений при просмотре страниц microsoft msdn по поводу этого аргумента ... в любом случае, вы знаете, как можно решить эту проблему с помощью методов ввода страниц? - person Andry; 26.07.2010
comment
Я не знаю причин, по которым вы не могли бы просто использовать службу WCF по вашему выбору - RESTful или нет, возвращая XML или JSON, все на ваш выбор. - person John Saunders; 26.07.2010
comment
Джон прав; уловка с методом страницы работает только в коде страниц ASPX. Если метод страницы работал так, как вы хотели, ASMX ScriptService предоставит вам ту же функциональность без необходимости возиться с WCF. - person Dave Ward; 27.07.2010
comment
@Dave: никаких проблем, просто устаревшее устаревание, застой, отсутствие исправлений ошибок, функций или будущего. - person John Saunders; 27.07.2010
comment
ScriptServices отлично подходит для обратных вызовов AJAX. Для этого простого сценария нет смысла пугать людей чрезмерным усложнением того, что уже хорошо работает и не нуждается в дополнительных исправлениях ошибок и функциях, которые все еще есть в WCF. - person Dave Ward; 27.07.2010
comment
@ Дэйв: исправления ошибок и особенности, а? Когда я упомянул исправления ошибок, это потому, что ошибки ASMX в основном не исправляются. Если вас и OP все устраивает, то я желаю вам всего наилучшего. - person John Saunders; 27.07.2010
comment
Какая конкретная ошибка ASMX влияет на эти простые обратные вызовы AJAX с помощью ScriptServices? Я не понимаю необходимости прибегать к тактике расплывчатого запугивания, когда дело касается WCF и ASMX. Прямо сейчас у них обоих есть свои сильные стороны. - person Dave Ward; 27.07.2010
comment
@ Дэйв: Я не использую тактику запугивания. Зачем мне? Большую часть моей карьеры я провел в компаниях, которые не разрешают использовать программное обеспечение, если в нем не будут исправлены ошибки, поэтому я поднял этот вопрос. В технологиях ASMX и XML Serialization исправляются только самые критические ошибки безопасности. Кстати, единственное преимущество ASMX, о котором я знаю, заключается в том, что в нем очень мало функций, которые сбивают с толку разработчиков, которые не понимают, какие функции доступны, и о которых им нужно подумать. - person John Saunders; 27.07.2010
comment
Простота - это особенность. Дополнительная сложность должна оправдывать себя. Сложность WCF оправдана его мощью во многих сценариях, но в этом она ничего не дает. Фактически, JavaScriptSerializer также обрабатывает перечисления и даты более гибко, чем DataContractJsonSerializer, который, как я считаю, очень полезен на регулярной основе. В конечном счете, было бы немного лукавством предполагать, что FileNew FileWeb Service Visual Studio 2010 исчезнет в одночасье или не будет поддерживаться в ближайшее время. - person Dave Ward; 28.07.2010