Программирование >>  Программирование с использованием ajax 

1 ... 233 234 235 [ 236 ] 237 238 239 ... 396


Описание полученных результатов

Элемент управления UpdateProgress отображает содержимое своего шаблона <РгogressTemplate> в случае, если фоновая операция длится дольше указанного в его свойстве DisplayAfter временного промежутка. По умолчанию для свойства DisplayAfter устанавливается значение, равное 500 миллисекундам. То, какой именно процесс выполняется, роли не играет. В примере был использован процесс Thread.Sleep для создания задержки в ходе обработки, но вместо этого также могла бы вызываться Web-служба или выполняться какое-то другое длительное действие.

<form id= forml runat= server > <div >

<asp:ScriptManager ID= ScriptManagerl runat= server

EnablePageMethods= True > </asp:ScriptManager>

<asp:UjpdateProgress ID= U)pdateProgressl runats server Ae80ciatedUlpdatePanelID= UlpdatePanell > <ProgressTen5>late>

Wait......

</ProgressTenplate> </asp: U)pdateProgre8s> </div>

<asp:UpdatePanel ID= UpdatePanell runat= server > <ContentTemplate > <asp:TextBox ID= TextBoxl runat= server > 1000 </asp:TextBox> <br /> <br /> <br />

<asp:Button ID= Buttonl runat= server Text= Button

onclick= Button Click /> <br /> </ContentTemplate> </asp:UpdatePanel> </form>

Bo всех приводившихся до сих пор практических занятиях использовались лишь серверные элементы управления ASP.NET. В случае применения ASP.NET AJAX можно еще также пользоваться и библиотекой клиентских сценариев, например, вызывать Web-службу прямо из клиента. В следующем разделе будет показано, как это делать.

Web-службы

Web-службы используются для не зависящих от платформы коммуникаций. В главе 21 уже показывалось, как можно создавать и вызвать Web-службы ASP.NET, а в главе 35 еще будет показано, как создавать Web-службы с помощью WCF (Windows Communication Foundation).

В следующем практическом занятии демонстрируется создание новой Web-службы и вызов ее непосредственно из клиентского сценария.

Практическое занятие q Web-СЛужбы

1. Откройте созданный ранее Web-сайт AJAXWebsite.

2. Добавьте в него службу WCF, поддерживающую возможности AJAX (как показано на рис. 22.6), и присвойте ей имя HelloService. svc.



Add New Item . CrBteVCShai

lemplatet;

Visual Studic ткЫка teniplj! J Web form

ADO NET Entit, Data Modfl

.IJaJAK ervabKd ЛЕ Service Ciast Diagram

Generrc Handtff jJjScriptFii* Report .Vizard

Te-rt F.i, 3 web Service > KSIT FOf ГИу Tempiatej

Matter Page jJajax Client Behavior aja.* Ma erPage jBrowierFile / Cryjtai Report Global Application Claii

UNQ to SQl CUiiei JJiRetourte File J SQl Server Databaie iWCF Service j3 xK l File

A iefv ce for pfovKling data to en AJAX page йате HeiloServicem

language

I Web User Control

4JAJA> Client Control

JAJA Лее Fo/m

Clasj

>y DataSet

*j HTMl Paoe

J Report

Site Map

Aj Style Sheet

ЛеЬ Conliguration File

Ml Schema

(v1u*IC#

рже oee m veo t ir file I ietext p ge

Pwc. 22.6. Добавление службы WCF, поддерживающей возможности AJAX

3. Откройте файл HelloService. cs и добавьте в него метод Greeting ():

using System.ServiceModel;

using System.ServiceModel.Activation;

using System.ServiceModel.Web;

[ServiceContract(Namespace = )]

[AspNetCompatibilityRequirements(RequirementsMode =

AspNetCompatibilityRequirementsMode.Allowed)] public class HelloService {

[WebGet]

[OperationContract]

public string Greeting (string name)

return Hello, + name;

4. Добавьте новую Web-форму AJAX no имени CallServ ice. aspx.

5. Откройте редактор свойств для содержащегося внутри этой ASPX-страницы элемента управления ScriptManager. Щелкните на кнопке с изображением символа троеточия напротив свойства Services, чтобы открыть такое диалоговое окно ServiceReference Collection Editor (Редактор коллекции ServiceReference), показанное на рис. 22.7. В этом диалоговом окне добавьте ссылку на службу с помощью кнопки Add (Добавить) и измените значение в свойстве Path на HelloService.svc.

6. Далее добавьте в страницу три следующих HTML-элемента управления: Input (Text), Input (Button) и Div.

7. Установите для идентификатора элемента управления Div значение result.

8. Установите для идентификатора элемента управления Input (Text) значение

input.



HcuoS fvt< .HK piopfrtiei.

Inltn Scr)pt r \\e

He oS Tince.svc

Path , The pethtothf ,(

i \ i.

Puc. 22.7. Диалоговое окно ServiceReference Collection Editor

9. Замените значение свойства Value у buttonl на Invoke Service. . . (Вызов службы).

10. Измените блок сценария в странице путем объявления в нем сначала переменной helloService, как показано ниже:

<script type= text/javascript > var helloService;

function pageLoadO { }

</script>

11. Внутри метода pageLoad создайте экземпляр переменной helloService. Ее тип должен совпадать с тем, что указан в свойстве Services элемента управления ScriptManager, которое было определено ранее. HelloService - это прокси-объект для доступа к Web-службе:

<script type= text/javascript > var helloService; function pageLoad0 { helloService = new HelloService () ;

12. Создайте функции helloSucceed и helloFailed, т.е. методы, которые должны вызываться асинхронным образом при успешной или неудачной попытке вызова Web-службы. Внутри метода helloSucceed установите свойство innerHTML дескриптора div по имени result равным результату полученному от Web-службы:

<script type= text/javascript > var helloService; function pageLoad0 { helloService = new HelloService();

function helloSucceed (result) { var d = document.getElementById( result ) ; d.innerHTML = result;

function helloFailed (error, userContext, methodName) { )

</script>



1 ... 233 234 235 [ 236 ] 237 238 239 ... 396

© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика