Методы страницы

Вероятно, вы уже заметили, что размещение всех веб-методов приложения в отдельном файле – занятие несколько утомительное. С архитектурной точки зрения такой способ размещения программного кода выглядит неплохо. Но в случае простых сценариев или приложений (как большинство примеров в этой книге) дополнительные файлы .asmx приводят только к загромождению проекта.

Добавив лишь немного дополнительного кода, вы сможете разместить все необходимое в одном месте, а именно – в главном файле .aspx (или в файле с реализацией класса). Для этого необходимо выполнить два условия. Первое: с помощью директивы @ Import импортировать пространство имен веб?службы в файл страницы, как показано ниже:
<%@ Import Namespace="System.Web.Services" %>

Второе: разместить в странице программный код веб-методов. Чтобы идентифицировать их как методы веб-службы (или, если быть более точным, как методы, которые работают подобно веб-методам), необходимо предварять их атрибутом [WebMethod], как это делается в файле .asmx. Однако при использовании такой поддержки встроенных методов веб?службы в ASP.NET AJAX необходимо соблюдать следующие требования:
• Методы должны отмечаться атрибутом ScriptMethod, определение
которого находится в System.Web.Script.Services.
• Метод должен быть объявлен как public.
• Метод должен быть объявлен как static.

Ниже приводится пример простого метода, который соответствует всем требованиям:


Платформа ASP.NET AJAX автоматически отыскивает все такие методы и инкапсулирует их в виде клиентского класса PageMethods.


Таким образом, вызов метода должен иметь форму PageMethods.DivideNumbers(), как показано ниже:

function callService(f) {
document.getElementById("c").innerHTML = "";
PageMethods.DivideNumbers(
parseInt(f.elements["a"].value),
parseInt(f.elements["b"].value),
callComplete,
callError);
}

На заключительном этапе необходимо разрешить вызов встроенных методов веб?службы. В терминологии ASP.NET AJAX они называются «методами страницы», а элемент управления ScriptManager поддерживает свойство, с помощью которого можно разрешить поддержку методов страницы:
(asp:ScriptManager ID="a1" runat="server" EnablePageMethods="true" /)

В примере 5.3 приводится полный текст страницы ASP.NET, где в одном файле размещены как сам текст страницы, так и программный код методов веб-службы.
Пример 5.3. Программный код веб?службы и ASP.NET AJAX в одном файле
Inline.aspx
<%@ Page Language="C#" %>
<%@ Import Namespace="System.Web.Services" %>
"http://www.w3.org/TR/xhtml1/DTD/xhtml1?transitional.dtd">
ASP.NET AJAX


(body)
(asp:ScriptManager ID="ScriptManager1" runat="server"
EnablePageMethods="true")
(/asp:ScriptManager)



/

=

(br /)
onclick="callService(this.form);" />
(br /)



(/body)
.



Оцените статью: (0 голосов)
0 5 0

Статьи из раздела ASP.NET AJAX на эту тему:
Веб-службы и Internet Explorer
Веб-службы и броузеры Mozilla
Веб-службы и броузеры обоих типов
Доступ к веб-службам из JavaScript
Обмен данными со сложной структурой

Вернуться в раздел: ASP.NET AJAX / Веб-службы