|
Программирование >> Программирование с использованием ajax
Описание полученных результатов Элемент управления 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>
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |