Download It
Upcoming SlideShare
Loading in...5
×
 

Like this? Share it with your network

Share

Download It

on

  • 2,821 views

 

Statistics

Views

Total Views
2,821
Views on SlideShare
2,819
Embed Views
2

Actions

Likes
1
Downloads
70
Comments
0

1 Embed 2

http://www.slideshare.net 2

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Download It Presentation Transcript

  • 1. ASP.NET2.0 AJAX For Richer, Dynamic and Responsive Web Applications
  • 2. Table of Contents
    • What is AJAX?
    • What is ASP.NET2.0 AJAX?
    • Why use ASP.NET2.0 AJAX?
    • The Client and Server Pieces of ASP.NETAJAX
    • Installing ASP.NET AJAX
    • AJAX Libraries for ASP.NET
    • ScriptManager
    • Partial Page Updates
        • UpdatePanel Control
        • UpdateProgress Control
        • Timer Control
    Table of Contents
  • 3. Table of Contents
    • ASP.NET AJAX Client Library
        • AJAX JavaScript Extensions
        • AJAX Base Class Library
    • ASP.NET AJAX Networking
        • XMLHttpRequest Object
        • Data Communication
          • JSON
    • Calling Web Services from Client Script
    • Rich AJAX Toolkit Controls & ASP.NET Futures CTP
    • Server and Client Reference
    Table of Contents
  • 4. What is AJAX?
    • Ajax (asynchronous JavaScript and XML), or AJAX, is a group of interrelated web development techniques used for creating interactive web applications or rich Internet applications
    Google Suggest provides users with a list of options based on keyed-in characters without refreshing the page. Google Maps covers the entire planet, though with varying degrees of granularity. It offers satellite pictures as well as the usual abstract map representations. What is AJAX?
  • 5. History of AJAX?
    • Jesse James Garrett, co-founder and president of Adaptive Path in 2005, coined the term Ajax and defined the concepts behind it.
    • Examples
      • Flickr - A Yahoo! Company
        • Flickr is a photo storage and display program that uses AJAX.
      • Gmail - Google
        • Gmail is an AJAX powered email system.
    History of AJAX?
  • 6. AJAX Technology?
    • It refers specifically to these technologies:
      • XHTML and CSS for presentation
      • The Document Object Model for dynamic display and interaction with data
      • XML and XSLT for the interchange and manipulation of data, respectively
      • The XMLHttpRequest object for asynchronous communication
      • JavaScript to bring these technologies together
    AJAX Technology?
  • 7. What is ASP.NET AJAX?
    • ASP.NET AJAX is the name of Microsoft’s AJAX solution, and it refers to a set of client and server technologies that focus on improving web development with Visual Studio
    What is ASP.NET AJAX?
  • 8. Why use ASP.NET AJAX?
    • ASP.NET AJAX applications offer:
    • Improved efficiency by performing significant parts of a Web page's processing in the browser.
    • Familiar UI elements such as progress indicators, tooltips, and pop-up windows.
    • Partial-page updates that refresh only the parts of the Web page that have changed.
    • Client integration with ASP.NET application services for forms authentication and user profiles.
    • Integration of data from different sources through calls to Web services.
    • A framework that simplifies customization of server controls to include client capabilities.
    • Support for the most popular and generally used browsers, which includes Microsoft Internet Explorer, Mozilla Firefox, and Apple Safari.
    Why use ASP.NET AJAX?
  • 9. The Client and Server pieces of ASP.NET AJAX
    • ASP.NET is built on top of the Microsoft Internet Information Services (IIS) web server.
    • ASP.NET AJAX builds on top of that and the web services it includes. The Microsoft AJAX Library runs in the browser to manipulate the DOM, communicate asynchronously with the web server, and take advantage of ASP.NET services .
    The Client and Server pieces of ASP.NET AJAX
  • 10. The Client and Server pieces of ASP.NET AJAX
    • Microsoft AJAX Library
    • It is a JavaScript library that works on a variety of browsers and serves to simplify JavaScript development.
    • It is a type system and set of class libraries that simplify writing JavaScript to enhance the user experience, manipulate the DOM, and communicate with the web server
    • ASP.NET 2.0 AJAX Extensions
    • These extensions build on top of the ASP.NET classes and controls and leverage the Microsoft AJAX Library sent to the browser.
    • They make it easy to quickly take advantage of AJAX technologies by providing a set of server controls.
    • Through a set of standard web services, ASP.NET AJAX is also able to leverage server-based application services such as authentication and user profile storage
    The Client and Server pieces of ASP.NET AJAX
  • 11. Installing ASP.NET AJAX
    • ASP.NET AJAX includes
      • Microsoft ASP.NET 2.0 AJAX Extensions, which is a server framework
      • The Microsoft AJAX Library, which consists of client script that runs on the browser.
    • To install Microsoft ASP.NET AJAX
      • Download the ASPAJAXExtSetup.msi installation package from the ASP.NET AJAX Downloads Web site.
      • To add the ASP.NET AJAX Control Toolkit, download and install it from ASP.NET AJAX Control Toolkit Web site.
    • If you have Microsoft Visual Studio 2005 installed on your computer, the installation process installs templates for AJAX-enabled Web site projects.
    • It also installs an assembly (AJAXExtensionToolbox.dll) that extends the Visual Studio toolbox
    Installing ASP.NET AJAX
  • 12. AJAX Libraries for ASP.NET
    • Ajax.NET Professional: Michael Schwartz developed Ajax.NET Professional as a tool primarily used to simplify the data transport mechanism that enables a client JavaScript routine to communicate with a server program.
    • Anthem.NET: Anthem.NET is a SourceForge project where users are able to download the sources to the project. It targets ASP.NET 1.1 and ASP.NET 2.0. It has a set of server controls that use their underlying JavaScript library to communicate with the server
    • DoJo: It is a client-side library for AJAX development without ties to any server technology. DoJo has a type system for JavaScript and a function for binding script to events from JavaScript objects or DHTML elements. One of its strengths is rich support for dynamic script loading.
    AJAX Libraries for ASP.NET
  • 13. AJAX Libraries for ASP.NET
    • Prototype: It has a type system for scripting in a more object-oriented way. Prototype provides networking functionality and a method for automatically updating an HTML element with the results of an HTTP request when given a URL.
    • Script.aculo.us: Script.aculo.us is built on top of the Prototype library. It includes functionality for adding drag-and-drop support to an application. It has a lot of effects code for fading, shrinking, moving, and otherwise animating DOM elements. Script.aculo.us also has a slider control and a library for manipulating lists of elements.
    • Rico: The Rico library also builds on top of the Prototype system. It has support for adding drag-and-drop behavior to browser DOM elements. It also has some controls to bind JavaScript objects to DOM elements for manipulating data. Rico has constructs for revealing and hiding portions of a page using an accordion style. It also has animation, sizing, and fading effects prebuilt for easier use.
    AJAX Libraries for ASP.NET
  • 14. ScriptManager
    • Any AJAX library needs a component or a tool that makes some JavaScript code available on the client. This script code represents the client infrastructure necessary for the library to work .
    • AJAX libraries tend to offer a server-side, often parameterless, component that when dropped on the page automatically outputs any required scripts. This component is generally known as the AJAX manager or script manager
    • In addition to ensuring that the proper script is linked to the page, the script manager typically
      • Enables and supports partial page rendering,
      • Generates proxy code to call remotely into server-side methods and objects,
      • Sets up auxiliary services.
    Script Mangager
  • 15. Partial Page Updates
    • Partial rendering divides the page into independent regions, each of which controls its own postbacks and refreshes without causing or requiring a full page update. This is desirable when only a portion of the page needs to change during a postback.
    • Partial updates reduce screen flickering and allows to create more interactive Web applications
    • Partial rendering requires a ScriptManager control in the page. It is essential that the EnablePartialRendering property on the manager be set to true —which is the default case.
    Partial Page Updates
  • 16. Partial Page Updates- Update Panel Control
    • The UpdatePanel is a container control without any UI of its own.
    • Defined in the System.Web.Extensions assembly, it belongs specifically to the System.Web.UI namespace. The control class is declared as follows:
    • public class UpdatePanel : Control{ ...}
    • The control has a number of properties to control page updates and also exposes a clientside object model.
    • When a control within the UpdatePanel triggers a postback, the UpdatePanel intervenes to initiate the postback asynchronously and update just that portion of the page.
    • At the time the call to the server is made, the name of a JavaScript callback function that will be called is provided, when the response has been received. That callback function will receive the results and update various page controls accordingly.
    Partial Page Updates – Update Panel Control
  • 17. Partial Page Updates- Update Panel Control
    • Partial Page Update is coordinated by the ScriptManager server control and the client PageRequestManager class.
    • When partial-page updates are enabled, controls can asynchronously posted to the server.
      • With an asynchronous postback, page updates are limited to regions of the page that are enclosed in UpdatePanel controls and that are marked to be updated.
      • The server sends HTML markup for only the affected elements to the browser. In the browser, the client PageRequestManager class performs Document Object Model (DOM) manipulation to replace existing HTML with updated markup.
      • The UpdatePanel control sends an out-of-band request for fresh markup and then updates the Document Object Model (DOM) tree when the response is ready.
    Partial Page Updates – Update Panel Control
  • 18. Partial Page Updates- Update Panel Control -Example
    • The Example page has two labels and two buttons that can each cause a postback.
    • It simply updates the two labels with the current server time. Button1 and
    • its label are placed inside an UpdatePanel. Actually, they are put in the
    • ContentTemplate of the UpdatePanel.. The other label and button are left
    • outside the UpdatePanel
    • <!DOCTYPE html PUBLIC &quot;-//W3C//DTD XHTML 1.0 Transitional//EN&quot;
    • &quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd&quot;>
    • <script runat=&quot;server&quot; language=&quot;C#&quot; >
    • protected override void OnLoad(EventArgs e) {
    • base.OnLoad(e);
    • string theTime = DateTime.Now.ToLongTimeString();
    • for (int i = 0; i < 3; i++) {
    • theTime += &quot;<br />&quot; + theTime;
    • }
    • time1.Text = theTime;
    • time2.Text = theTime;
    • }
    • </script>
    Partial Page Updates – Update Panel Control - Example
  • 19. Partial Page Updates- Update Panel Control
    • <html xmlns=&quot;http://www.w3.org/1999/xhtml&quot; >
    • <head id=&quot;Head1&quot; runat=&quot;server&quot;>
    • <title>Basic Update Panel</title>
    • </head>
    • <body>
    • <form id=&quot;form1&quot; runat=&quot;server&quot;>
    • <div>
      • <asp:ScriptManager ID=&quot;ScriptManager1&quot; runat=&quot;server&quot;></asp:ScriptManager>
      • <asp:Label runat=&quot;server&quot; ID=&quot;time1&quot;></asp:Label><br /><br />
      • <asp:UpdatePanel ID=&quot;UpdatePanel1&quot; runat=&quot;server&quot;>
      • <ContentTemplate>
      • <div style=&quot;border-style:solid;background-color:gray;&quot;>
      • <asp:Label runat=&quot;server&quot; ID=&quot;time2&quot;></asp:Label><br />
      • <asp:Button ID=&quot;Button1&quot; runat=&quot;server&quot; Text=&quot;Inside Button&quot; />
      • </div><br />
      • </ContentTemplate>
      • </asp:UpdatePanel>
      • <asp:Button ID=&quot;Button2&quot; runat=&quot;server&quot; Text=&quot;Outside Button&quot; />
    • </div>
    • </form>
    • </body>
    • </html>
    Partial Page Updates – Update Panel Control
  • 20. Partial Page Updates- Update Panel Control
    • In the code-behind, both labels are assigned the same time string in the same way.
    • When the page is first requested, the two labels show the same time
    • When the Outside Button is clicked, a postback occurs and the time is updated for both of the labels.
    • When the button inside the UpdatePanel is clicked, an
    • asynchronous postback occurs and only the label inside the UpdatePanel is updated
    Partial Page Updates – Update Panel Control
  • 21. Partial Page Updates- How Update Panel Control is refreshed?
    • The property settings of the UpdatePanel control determine when a panel's content is updated during partial-page rendering.
    • If the UpdateMode property is set to Always , the UpdatePanel control’s content is updated on every postback that originates from anywhere on the page. This includes asynchronous postbacks from controls that are inside other UpdatePanel controls, and postbacks from controls that are not inside UpdatePanel controls.
    Partial Page Updates – How Update Panel Control is refreshed?
  • 22. Partial Page Updates- How Update Panel Control is refreshed?
    • If the UpdateMode property is set to Conditional , the UpdatePanel control’s content is updated when one of the following is true:
      • When the postback is caused by a trigger for that UpdatePanel control.
      • When the UpdatePanel control's Update() method is called explicitly.
      • When the UpdatePanel control is nested inside another UpdatePanel control and the parent panel is updated.
      • When the ChildrenAsTriggers property is set to true and any child control of the UpdatePanel control causes a postback. Child controls of nested UpdatePanel controls do not cause an update to the outer UpdatePanel control unless they are explicitly defined as triggers for the parent panel.
    • If the ChildrenAsTriggers property is set to false and the UpdateMode property is set to Always , an exception is thrown. The ChildrenAsTriggers property is intended to be used only when the UpdateMode property is set to Conditional .
    Partial Page Updates – How Update Panel Control is refreshed?
  • 23. Partial Page Updates- Update Panel Control –Triggering Updates
    • By default, any postback control inside an UpdatePanel control causes an asynchronous postback and refreshes the panel's content.
    • A trigger is a binding that specifies which postback control and event cause a panel to update. When the specified event of the trigger control is raised (for example, a button's Click event), the update panel is refreshed.
    • A trigger's control event is optional. If an event is not specified, the trigger event is the default event of the control. For example, for the Button control, the default event is the Click event.
    • The trigger is defined by using the <asp:AsyncPostBackTrigger> element inside the <Triggers> element of the UpdatePanel control.
    Partial Page Updates – Update Panel Control – Triggering Updates
  • 24. Partial Page Updates- Update Panel Control –Triggering Updates
    • UpdatePanels can be nested inside one another. When the outer UpdatePanel is refreshed, the inner UpdatePanel will also be refreshed.
    • when the inner UpdatePanel is updated, the outer UpdatePanel is not affected. Even when the outer UpdatePanel has ChildrenAsTriggers set to true, an asynchronous update of the inner UpdatePanel will not cause the outer UpdatePanel to be refreshed.
    • To have controls in a contained UpdatePanel cause a refresh, they have to be set explicitly as triggers on the outer UpdatePanel.
    Partial Page Updates – Update Panel Control – Triggering Updates
  • 25. Partial Page Updates- Update Panel Control –Triggering Updates Example
    • <html xmlns=&quot;http://www.w3.org/1999/xhtml&quot; >
    • <head runat=&quot;server&quot;>
    • <title>Refreshing Update Panel through triggers</title>
    • </head>
    • <body>
    • <form id=&quot;form1&quot; runat=&quot;server&quot;>
    • <div>
    • <asp:Button ID=&quot;Button1&quot;
    • Text=&quot;Refresh Panel&quot;
    • runat=&quot;server&quot; />
    • <asp:ScriptManager ID=&quot;ScriptManager1&quot;
    • runat=&quot;server&quot; />
    • <asp:UpdatePanel ID=&quot;UpdatePanel1&quot;
    • UpdateMode=&quot;Conditional&quot;
    • runat=&quot;server&quot;>
    • <Triggers>
    • <asp:AsyncPostBackTrigger ControlID=&quot;Button1&quot; />
    • </Triggers>
    • <ContentTemplate>
    • <fieldset>
    • <legend>UpdatePanel content</legend>
    • <%=DateTime.Now.ToString() %>
    • </fieldset>
    • </ContentTemplate>
    • </asp:UpdatePanel>
    • </div>
    • </form>
    • </body>
    • </html>
    Partial Page Updates – Update Panel Control – Triggering Updates - Example
  • 26. Partial Page Updates- Update Panel Control with User Controls
    • The ScriptManager control will manage partial-page updates for UpdatePanel controls that are directly on the ASP.NET Web page or inside a user control on the page.
    • The user controls inside an update panel will be refreshed when the contents of the update panel are updated.
    • It is valid to put an UpdatePanel control inside a user control so that the user control supports partial-page updates. However, in that case, page developers who add the user control to a page must explicitly add a ScriptManager control in the host Web page.
    Partial Page Updates – Update Panel Control with User Controls
  • 27. Partial Page Updates- Update Panel Control with User Controls
    • Create a UserControl named WebUserControl.ascx which performs temperature conversion from Celsuis to Fahrenheit.
      • Drag and drop a UpdatePanel Control and place the textbox and button controls inside it
      • Add a button event handler to perform the temperature conversion
    • Create a Web Page ‘UpdateUserControl.aspx’
      • Place a ScriptManager Control in the page.
      • Drap and drop the user control into it.
      • Run the Page.
    • protected void ConvertButton_Click(object sender, EventArgs e)
    • {
    • double a = 1.8 *
    • double.Parse(CelText.Text) + 32;
    • FahText.Text = a.ToString();
    • }
    Partial Page Updates – Update Panel Control with User Controls
  • 28. Partial Page Updates- The Partial Page Update Life Cycle
    • The page execution Lifecycle is not altered by the partial rendering feature.
    • The ScriptManager participates in the lifecycle to facilitate the partial page updates. It coordinates gathering the renderings from the UpdatePanels that need to be refreshed during an asynchronous post and carrying the hidden fields necessary to make the following post function correctly.
    • Controls that modify the ViewState, even if they are not in the UpdatePanel being affected, do not have to take any special action to ensure the change is available in subsequent requests.
    • Event validation, cross page posting, and ASP.NET’s ability to maintain the scroll position all continue to work when using the UpdatePanel.
    Partial Page Updates – The Partial Page Update Life Cycle
  • 29. Partial Page Updates- The Update Panel Caution and Complexities
    • Complex controls that make heavy use of dynamically registered script won’t work correctly until they are updated to switch from using the ClientScriptManager of ASP.NET 2.0 to using the ScriptManager included with ASP.NET AJAX.
    • The ASP.NET Menu and TreeView controls are not fully compatible with the UpdatePanel in the 1.0 release.
    • The validation controls also register script in a way that is incompatible with the UpdatePanel. (Disable the client script for the validator controls and then use them in an UpdatePanel)
    • Web Parts
    Partial Page Updates – The Update Panel Cautions and Complexities
  • 30. Partial Page Updates- The Update Panel Caution and Complexities
    • The GridView and DetailsView controls already have a feature for using client callbacks to paging and sorting. It is not enabled by default, but if the feature is enabled, these controls cannot be used inside an UpdatePanel.
    • The FileUpload control also can’t submit files as part of an asynchronous postback
    • The asp:substitution control
    • The way the ScriptManager extracts the contents needed for the partial page updates in the 1.0 release, calling Response.Write during the execution of an asynchronous postback will result in an error
    • Login , PasswordRecovery , ChangePassword , and CreateUserWizard controls whose contents have not been converted to editable templates.
    Partial Page Updates – The Update Panel Cautions and Complexities
  • 31. Partial Page Updates- Update Progress Control
    • Microsoft created the UpdateProgress control to make it easy to provide visual
    • feedback to the user to indicate that the update is being processed. This is
    • something like a “busy” hourglass cursor in Windows applications.
      • using System;
      • using System.Web.UI;
      • public partial class UpdateProgress : System.Web.UI.Page
      • {
      • protected override void OnLoad(EventArgs e)
      • {
        • System.Threading.Thread.Sleep(4000);
        • base.OnLoad(e);
        • string theTime = DateTime.Now.ToLongTimeString();
        • for(int i = 0; i < 3; i++)
        • { theTime += &quot;<br />&quot; + theTime; }
        • time1.Text = theTime;
        • }
      • }
    Partial Page Updates – Update Progress Control
  • 32. Partial Page Updates- Update Progress Control
    • <html xmlns=&quot;http://www.w3.org/1999/xhtml&quot; >
    • <head id=&quot;Head1&quot; runat=&quot;server&quot;>
    • <title>Update Progress</title>
    • </head>
    • <body>
    • <form id=&quot;form1&quot; runat=&quot;server&quot;>
    • <div>
      • <asp:ScriptManager ID=&quot;ScriptManager1&quot; runat=&quot;server&quot;></asp:ScriptManager>
      • Some page content<br />
      • <asp:UpdateProgress ID=&quot;UpdateProgress1&quot; runat=&quot;server&quot; DynamicLayout=&quot;true&quot; AssociatedUpdatePanelID=&quot;UpdatePanel1&quot; >
      • <ProgressTemplate> Processing… </ProgressTemplate>
      • </asp:UpdateProgress> More page content<br />
      • <asp:UpdatePanel ID=&quot;UpdatePanel1&quot; runat=&quot;server&quot; UpdateMode=&quot;Conditional&quot;>
      • <ContentTemplate> <div style=&quot;border-style:solid;background-color:gray;&quot;>
      • <asp:Button ID=&quot;Button1&quot; runat=&quot;server&quot; Text=&quot;Update&quot; /><br /><br />
      • <asp:Label runat=&quot;server&quot; ID=&quot;time1&quot;></asp:Label><br /> </div><br />
      • </ContentTemplate>
      • </asp:UpdatePanel>< br />
    • </div>
    • </form>
    • </body>
    • </html>
    Partial Page Updates – Update Progress Control
  • 33. Partial Page Updates- Update Progress Control Partial Page Updates – Update Progress Control
  • 34. Partial Page Updates- Timer Control
    • ASP.NET Ajax introduces the TimerControl which performs postbacks at defined intervals.
    • Use the Timer control when the following is required:
      • Periodically update the contents of one or more UpdatePanel controls without refreshing the whole Web page.
      • Run code on the server every time that a Timer control causes a postback.
      • Synchronously post the whole Web page to the Web server at defined intervals.
    • The Timer control is a server control that embeds a JavaScript component into the Web page. The JavaScript component initiates the postback from the browser when the interval that is defined in the Interval property has elapsed.
    • When a postback was initiated by the Timer control, the Timer control raises the Tick event on the server. An event handler for the Tick event can be created to perform actions when the page is posted to the server.
    Partial Page Updates – Timer Control
  • 35. Partial Page Updates- Timer Control
    • Using TimerControl with UpdatePanel to update the time on a page every five seconds
    • <html xmlns=&quot;http://www.w3.org/1999/xhtml&quot; >
    • <head runat=&quot;server&quot;>
    • <title>Clock</title>
    • </head>
    • <body>
    • <form id=&quot;form1&quot; runat=&quot;server&quot;>
    • <asp:ScriptManager runat=&quot;server&quot; ID=&quot;SM1&quot; /> <div>
    • <asp:TimerControl runat=&quot;server&quot; ID=&quot;Time&quot; Interval=&quot;5000&quot; Enabled=&quot;true&quot; />
    • <asp:UpdatePanel runat=&quot;server&quot; ID=&quot;TimePanel&quot;>
    • <Triggers> <asp:AsyncPostBackTrigger ControlID=&quot;Time&quot; EventName=&quot;Tick&quot; /> </Triggers>
    • <ContentTemplate>
    • <%= DateTime.Now.ToLongTimeString() %>
    • </ContentTemplate>
    • </asp:UpdatePanel>
    • </div>
    • </form>
    • </body>
    • </html>
    Partial Page Updates – Timer Control
  • 36. ASP.NET AJAX Client Library
    • The AJAX Library brings concepts from the .NET Framework to JavaScript running in the browser, making the server and client coding models a bit more consistent
    • The AJAX Library has also added a client-side page lifecycle, similar in concept to the ASP.NET server-side page lifecycle. This addition makes it easy to participate in the processing of the page, work with partial page rendering, and provide event handlers for user actions.
    • ASP.NET AJAX Library establishes a page lifecycle for JavaScript code running in the browser
      • The Browser Page Lifecycle
        • The pageLoad and pageUnload functions are the primary points to interact with the browser page lifecycle.
          • The pageLoad function is automatically called after the page is initially retrieved from the web server and some script processing has occurred.
          • The pageUnload function is then called whenever a subsequent request is initiated (for postback, partial page rendering, or even when navigating to a different application).
          • When the page is loaded again, even during partial rendering, the pageLoad function will again be triggered.
    ASP.NET AJAX Client Library
  • 37. ASP.NET AJAX Client Library
    • <html xmlns=&quot;http://www.w3.org/1999/xhtml&quot; >
    • <head runat=&quot;server&quot;>
    • <title>Browser Life Cycle</title>
    • <script type=&quot;text/javascript&quot;>
    • function pageLoad(sender, args) {
    • alert(&quot;hello&quot;);
    • }
    • function pageUnload(sender, args) {
    • alert(&quot;goodbye&quot;);
    • }
    • </script>
    • </head>
    • <body>
    • <form id=&quot;form1&quot; runat=&quot;server&quot;>
    • <asp:ScriptManager runat=&quot;server&quot; ID=&quot;sm&quot; />
    • <div>
    • </div>
    • </form>
    • </body>
    • </html>
    ASP.NET AJAX Client Library
  • 38. ASP.NET AJAX Client Library- Type System
    • The Microsoft AJAX Library adds a type system and extensions to JavaScript objects in order to
    • provide
      • Namespaces
      • Inheritance
      • Interfaces
      • Enumerations
      • Reflection
      • Helpers for strings and arrays.
    • They enable to write ASP.NET AJAX applications in a structured way that improves maintainability, makes it easier to add features, and makes it easier to layer functionality.
    • The AJAX Library brings classic OOP concepts to JavaScript. It adds namespace support for grouping functionality. It also provides helpful debugging facilities, a schema for providing type information, and a means for localizing string and image resources.
    ASP.NET AJAX Client Library – Type System
  • 39. ASP.NET AJAX Client Library- Type System: Namespaces The AJAX Library synthesizes namespaces by creating objects with those names. Class definitions can be organized logically in just the same way that is organized using C# or VB.NET. If separate files are created for different namespaces, it is possible load them conditionally the same way the Common Language Runtime loads just the assemblies it needs for an application and does so on demand ASP.NET AJAX Client Library – Type System : Namespaces
  • 40. ASP.NET AJAX Client Library- Type System: Namespaces
      • <html xmlns=&quot;http://www.w3.org/1999/xhtml&quot; >
      • <head runat=&quot;server&quot;>
      • <title>ASP.NET AJAX Namespaces</title>
      • <script type=&quot;text/javascript&quot;>
      • function pageLoad(sender, args)
      • {
      • Type.registerNamespace('Wrox.ASPAJAX');
      • alert( Type.isNamespace(Wrox.ASPAJAX )); //displays
      • var namespaces = Type.getRootNamespaces();
      • var mystr=&quot;&quot;;
      • for(var i = 0, length = namespaces.length; i < length; i++)
      • {
      • mystr=mystr+&quot; &quot;+ namespaces[i].getName();
      • }
      • alert(mystr); //displays
      • }
      • </script>
      • </head>
      • <body>
      • <form id=&quot;form1&quot; runat=&quot;server&quot;>
      • <asp:ScriptManager runat=&quot;server&quot;
      • ID=&quot;scriptManager1&quot; />
      • <div> </div>
      • </form>
      • </body>
      • </html>
    ASP.NET AJAX Client Library – Type System : Namespaces
  • 41. ASP.NET AJAX Client Library- Type System: Class
    • Classes are reference types. All classes in JavaScript derive from object.
    • Classes in ASP.NET AJAX helps to create objects and components that derive from base classes in the Microsoft AJAX Library by using an object-oriented programming model.
    • Classes can have four kinds of members: fields, properties, methods, and events.
      • Fields and properties are name/value pairs that describe characteristics of an instance of a class. Fields are composed of primitive types and are accessed directly
      • With properties, the value can be any primitive or reference type and is accessed by get and set accessor methods. In ASP.NET AJAX, the get and set accessors are separate functions, which by convention use the prefix &quot;get_&quot; or &quot;set_&quot; in the function name
    ASP.NET AJAX Client Library – Type System : Class
  • 42. ASP.NET AJAX Client Library- Type System: Class
    • The AJAX Library follows the pattern of declaring a function as the class constructor. JavaScript allows you to modify the prototype of the function directly, which is how the AJAX Library creates class members.
    • The class must then be registered so that it can participate in the semantics of the type system
      • Local members are accessed with a prefix of “this”.
      • The call to registerClass is on the type being registered. The prototype of the base type in JavaScript has been modified to add type-system support. Once the type is registered, an instance of it can be created and its members called.
      • The registerClass function actually has three possible parameters: The first one is for the name of the type, the second is for the base type being extended, and the last is to specify any interfaces that the class implements.
    ASP.NET AJAX Client Library – Type System : Class
  • 43. ASP.NET AJAX Client Library - Type System: Class <html xmlns=&quot;http://www.w3.org/1999/xhtml&quot; > <head runat=&quot;server&quot;> <title>ASP.NET AJAX Class</title> <script type=&quot;text/javascript&quot;> function pageLoad(sender, args) { Type.registerNamespace('Wrox.ASPAJAX.Samples'); Wrox.ASPAJAX.Samples.Album = function(title, artist) { this._title = title; this._artist = artist; } Wrox.ASPAJAX.Samples.Album.prototype = { get_title: function () { return this._title; }, get_artist: function() { return this._artist; } } Wrox.ASPAJAX.Samples.Album.registerClass('Wrox.ASPAJAX.Samples'); var anAlbum = new Wrox.ASPAJAX.Samples.Album(&quot;Round Room&quot;, &quot;Phish &quot;); alert(anAlbum.get_title()); } </script> </head> <body> <form id=&quot;form1&quot; runat=&quot;server&quot;> <div> <asp:ScriptManager runat=&quot;server&quot; ID=&quot;sm&quot; /> </div> </form> </body> </html> ASP.NET AJAX Client Library – Type System : Class
  • 44. ASP.NET AJAX Client Library - Type System: Class-Inheritance Inheritance: Instead of modifying a type directly, inherit from it and extend it in new members by overriding existing ones In the prototype model, a derived class has full access to the private members of the parent class. To be precise, in JavaScript the notion of private members is not the same as in classic OOP. ASP.NET AJAX Client Library – Type System : Class - Inheritance
  • 45. ASP.NET AJAX Client Library- Type System: Class-Inheritance <html xmlns=&quot;http://www.w3.org/1999/xhtml&quot; > <head runat=&quot;server&quot;> <title>ASP.NET AJAX Class Inheritance</title> <script type=&quot;text/javascript&quot;> function pageLoad(sender, args) { Type.registerNamespace('Wrox.ASPAJAX.Samples'); Wrox.ASPAJAX.Samples.Album = function(title, artist) { this._title = title; this._artist = artist; } Wrox.ASPAJAX.Samples.Album.prototype = { get_title: function () { return this._title; }, get_artist: function() { return this._artist; } } Wrox.ASPAJAX.Samples.Album.registerClass('Wrox.ASPAJAX.Samples'); Wrox.ASPAJAX.Samples.TributeAlbum = function(title, artist, tributeArtist) { Wrox.ASPAJAX.Samples.TributeAlbum.initializeBase(this, [title, artist]); this._tributeArtist = tributeArtist; } ASP.NET AJAX Client Library – Type System : Class - Inheritance
  • 46. ASP.NET AJAX Client Library- Type System: Class-Inheritance
    • Wrox.ASPAJAX.Samples.TributeAlbum.prototype = {
    • get_tributeArtist: function() {
    • return this._tributeArtist;
    • },
    • set_tributeArtist: function(tributeArtist) {
    • this._tributeArtist = tributeArtist;
    • }
    • }
    • Wrox.ASPAJAX.Samples.TributeAlbum.registerClass('Wrox.ASPAJAX.Samples.TributeAlbum',
    • Wrox.ASPAJAX.Samples.Album);
    • var anotherAlbum = new Wrox.ASPAJAX.Samples.TributeAlbum(&quot;Groove&quot;, &quot;Various Artists&quot;, &quot;Phish&quot;);
    • var title=anotherAlbum.get_title ();
    • var tributeartist=anotherAlbum.get_tributeArtist();
    • alert(&quot;Title:&quot;+title+&quot;,TributeArtist:&quot;+tributeartist);
    • }
    • </script>
    • </head>
    • <body>
    • <form id=&quot;form1&quot; runat=&quot;server&quot;>
    • <div> <asp:ScriptManager runat=&quot;server&quot; ID=&quot;sm&quot; /> </div>
    • </form>
    • </body>
    • </html>
    ASP.NET AJAX Client Library – Type System : Class - Inheritance
  • 47. ASP.NET AJAX Client Library- Type System: Class-Inheritance
    • The constructor must explicitly call initializeBase and pass itself, using the this keyword, along with an array of the arguments to pass to the constructor of the base type.
    • The call to initializeBase takes care of producing the final type with inheritance semantics in place. The base class constructor is called with the arguments provided.
    • The type system of the AJAX Library also provides some reflection functions to explore the relationship between objects.
      • if (Wrox.ASPAJAX.Samples.TributeAlbum.isInstanceOfType(anotherAlbum) == true)
      • { alert(&quot;anotherAlbum is a TributeAlbum&quot;);}
      • if (Wrox.ASPAJAX.Samples.TributeAlbum.inheritsFrom(Wrox.ASPAJAX.Samples.Album) ==true )
      • { alert(&quot;TributeAlbum inherits from Album&quot;);}
    ASP.NET AJAX Client Library – Type System : Class - Inheritance
  • 48. ASP.NET AJAX Client Library- Type System: Class-Interface Interfaces are a convenient way to define standard behaviors that other types can implement . An interface is a contract that states that the implementer of the interface must provide all of the functionality specified in the interface. The interface itself is only a specification and has no functionality of its own Interface definitions follow the same pattern as creating classes The function name is the name of the interface. The prototype of the function is modified to add the interface members. The convention in defining interface members is to throw Error.notImplemented for each member, so any class that implements the interface then needs to override the interface members to provide real implementations or the exception will be thrown. ASP.NET AJAX Client Library – Type System : Class - Interface
  • 49. ASP.NET AJAX Client Library- Type System: Class-Interface
    • <html xmlns=&quot;http://www.w3.org/1999/xhtml&quot; >
    • <head runat=&quot;server&quot;>
    • <title>ASP.NET AJAX Interface</title>
    • <script type=&quot;text/javascript&quot;>
    • function pageLoad(sender, args)
    • {
      • Type.registerNamespace('Wrox.ASPAJAX.Samples');
      • Wrox.ASPAJAX.Samples.IProvideTrackInfo = function() {
      • throw Error.notImplemented();
      • }
      • Wrox.ASPAJAX.Samples.IProvideTrackInfo.prototype = {
      • get_trackCount: function() {
      • throw Error.notImplemented();
      • }
      • }
      • Wrox.ASPAJAX.Samples.IProvideTrackInfo.registerInterface
      • ('Wrox.ASPAJAX.Samples.IProvideTrackInfo');
    • }
    • </script>
    • </head>
    • <body>
    • <form id=&quot;form1&quot; runat=&quot;server&quot;>
    • <div> </div>
    • </form>
    • </body>
    • </html>
    ASP.NET AJAX Client Library – Type System : Class - Interface
  • 50. ASP.NET AJAX Client Library- Type System: Class-Enumeration function pageLoad(sender, args) { Type.registerNamespace('Wrox.ASPAJAX.Samples'); Wrox.ASPAJAX.Samples.MusicGenre = function() { throw Error.invalidOperation(); } Wrox.ASPAJAX.Samples.MusicGenre.prototype = { Blues: 1, Classical: 2, Electronic: 3, Folk: 4, Industrial: 5, Jazz: 6, NewAge: 7, HipHop: 8, Rock: 9, WorldFusion: 10 } Wrox.ASPAJAX.Samples.MusicGenre.registerEnum ('Wrox.ASPAJAX.Samples.MusicGenre'); var genre = Wrox.ASPAJAX.Samples.MusicGenre.Industrial; alert(Wrox.ASPAJAX.Samples.MusicGenre.toString(genre)); alert(genre == Wrox.ASPAJAX.Samples.MusicGenre.Industrial); } The ASP.NET AJAX type system provides for defining enumerations and a specialized version of them used as combinable flags. Enums let you establish a set of possible values ASP.NET AJAX Client Library – Type System : Class – Enumeration
  • 51. ASP.NET AJAX Client Library- AJAX Base Class Library
    • Microsoft ASP.NET AJAX provides features that helps in creating client script and integrate it into ASP.NET applications. This includes extensions to existing ECMAScript (JavaScript) objects to give them the richness of .NET Framework classes
    • The AJAX Library takes a familiar set of features from the Base Class Library of the .NET Framework and brings it to JavaScript in the browser
    • Extensions to JavaScript base types provide additional functionality for these types.
      • Array Type Extensions
      • Boolean Type Extensions
      • Date Type Extensions
      • Error Type Extensions
      • Number Type Extensions
      • Object Type Extensions
      • String Type Extensions
    ASP.NET AJAX Client Library – AJAX Base Class Library
  • 52. ASP.NET AJAX Networking
    • The core of AJAX development is the ability to make asynchronous web service calls from JavaScript code.
    • Major web browsers have included an XMLHttpRequest object for making HTTP requests.
    • The XMLHttpRequest object is used to perform out-of-band communications with the server for invoking web services, executing callbacks, and performing partial page updates.
    • ASP.NET AJAX provides classes for managing web requests, processing responses, and detecting errors. It also provides support for serializing objects formatted as JSON (JavaScript Object Notation), which makes them readily usable in JavaScript in the browser.
      • JSON is a standard serial format that is more lightweight than XML.
    ASP.NET AJAX Networking
  • 53. ASP.NET AJAX Networking- XMLHttpRequest Object
    • Remote Scripting:
      • To minimize the impact of page redraws, primitive forms of scripted remote procedure calls (RPC) appeared around 1997. Microsoft, in particular, pioneered this field with a technology called Remote Scripting (RS).
      • RS employed a Java applet to pull in data from a remote Active Server Pages (ASP)-based URL. The URL exposed a contracted programming interface through a target ASP page and serialized data back and forth through plain strings. On the client, a little JavaScript framework received data and invoked a user-defined callback to update the user interface via Dynamic HTML or similar techniques. RS worked on both Internet Explorer 4.0 and Netscape Navigator 4.0 and older versions.
    • Microsoft replaced the Java applet with a Component Object Model (COM) object named XMLHttpRequest and released most of the constraints on the programming interface exposed by the remote URL.
    ASP.NET AJAX Networking – XMLHttpRequest Object
  • 54. ASP.NET AJAX Networking- XMLHttpRequest Object
    • Browsers generally place a new request when an HTML form is submitted either via clientside script or through a user action such as a button click. When the response is ready, the browser replaces the old page with the new one
    • The out-of-band call is triggered via script by an HTML page event and is served by a proxy component based on the XMLHttpRequest object
    • The proxy component sends a regular HTTP request and waits, either synchronously or asynchronously, for it to be fully served. When the response data is ready, the proxy invokes a user-defined JavaScript callback to refresh any portion of the page that needs updating.
    ASP.NET AJAX Networking – XMLHttpRequest Object
  • 55. ASP.NET AJAX Networking- XMLHttpRequest Object
    • In Mozilla browsers XMLHttpRequest looks like a native JavaScript object and can be instantiated through the classic new operator:
    • var proxy = new XMLHttpRequest();
    • When the browser is Internet Explorer, the XMLHttpRequest object is instantiated using the ActiveXObject wrapper
    • var proxy = new ActiveXObject(&quot;Microsoft.XmlHttp&quot;);
    • XMLHttpRequest in Internet Explorer 7
    • var proxy = new XMLHttpRequest();
    • ASP.NET AJAX Extensions completely encapsulates this object and shields page authors and application designers from it
    ASP.NET AJAX Networking – XMLHttpRequest Object
  • 56. ASP.NET AJAX Networking- XMLHttpRequest Object
    • The XMLHttpRequest object is designed to perform one key operation: sending an HTTP request. The request can be sent either synchronously or asynchronously.
    • interface XMLHttpRequest {
    • function onreadystatechange;
    • readonly unsigned short readyState;
    • void open(string method, string url);
    • void open(string method, string url, bool async);
    • void open(string method, string url, bool async, string user);
    • void open(string method, string url, bool async,
    • string user, string pswd);
    • void setRequestHeader(string header, string value);
    • void send(string data);
    • void send(Document data);
    • void abort();
    • string getAllResponseHeaders();
    • string getResponseHeader(string header);
    • string responseText;
    • Document responseXML;
    • unsigned short status;
    • string statusText;
    • };
    ASP.NET AJAX Networking – XMLHttpRequest Object
  • 57. ASP.NET AJAX Networking- XMLHttpRequest Object-Example
    • (Time.aspx) is a web page that returns the server time to its caller. It takes no parameters and returns a string .
      • <html xmlns=&quot;http://www.w3.org/1999/xhtml&quot; >
      • <head runat=&quot;server&quot;>
      • <title>Time Page</title>
      • <script runat=&quot;server&quot;>
      • protected override void OnLoad(EventArgs e) {
      • base.OnLoad(e);
      • Response.Write(&quot;Server Time:&quot;+DateTime.Now.ToUniversalTime());
      • }
      • </script>
      • </head>
      • <body>
      • <form id=&quot;form1&quot; runat=&quot;server&quot;>
      • <div>
      • </div>
      • </form>
      • </body>
      • </html>
    ASP.NET AJAX Networking – XMLHttpRequest Object - Example
  • 58. ASP.NET AJAX Networking- XMLHttpRequest Object-Example
    • <html xmlns=&quot;http://www.w3.org/1999/xhtml&quot; >
    • <head runat=&quot;server&quot;>
    • <title>Networking using XMLHttpRequestObject</title>
    • <script type=&quot;text/javascript&quot;>
    • var xmlhttp;
    • function pageLoad() {
    • if(window.ActiveXObject) {
    • xmlhttp = new ActiveXObject(&quot;Msxml2.XMLHTTP&quot;);
    • }
    • else {
    • xmlhttp = new XMLHttpRequest();
    • }
    • xmlhttp.open(&quot;GET&quot;, &quot;Time.aspx&quot;, true);
    • xmlhttp.onreadystatechange = readyStateChangedHandler;
    • xmlhttp.send();
    • }
    • function readyStateChangedHandler() {
    • if(xmlhttp.readyState == 4) {
    • alert(xmlhttp.responseText);
    • }
    • }
    • </script>
    • </head>
    • <body>
    • <form id=&quot;form1&quot; runat=&quot;server&quot;>
    • <asp:ScriptManager runat=&quot;server“
    • ID=&quot;ScriptManager1&quot;>
    • </asp:ScriptManager>
    • </form>
    • </body>
    • </html>
    • (CallTime.aspx) shows basic usage of the XMLHttpRequest object to call the time web page
    ASP.NET AJAX Networking – XMLHttpRequest Object - Example
  • 59. ASP.NET AJAX Networking- Data Communication
    • An important part of any type of distributed application is how data is pushed around between tiers or layers of the application
    • With AJAX, the following concepts are important
      • XML—XML is Extensible Markup Language. It is primarily used for data interchange.
      • XSLT—XSLT is Extensible Stylesheet Language Transformations. XSLT is designed to take XML data from one format and put it into another format.
      • JSON—JSON is the JavaScript Object Notation. JSON is a lightweight data interchange format.
    • When tied together with web services, XML and JSON allow for data interchange between different operating systems and also across the Internet.
    ASP.NET AJAX Networking – Data Communications
  • 60. ASP.NET AJAX Networking- Data Communication-JSON
    • JSON is the JavaScript Object Notation, and it is a lightweight data interchange format.
    • JSON's chief advantage over XML is that the data may be parsed fairly easily using JavaScript's built-in eval() method.
    • JSON is conceptually similar to arrays and collections in procedural programming languages.
    • JSON is built on the following data structures:
      • Name/value pairs—This may be called an object, record, structure (struct), HashTable, keyed list, or associated array.
      • List of values—This list of values is referred to an array in most programming languages.
    ASP.NET AJAX Networking – Data Communications - JSON
  • 61. Web Services & JavaScript
    • ASP.NET 2.0 AJAX Extensions enables the call to ASP.NET Web services from the browser by using client script. The page can call server-based methods without a postback and without refreshing the whole page, because only data is transferred between the browser and the Web server.
    • Calling a Web service method from script is asynchronous.
    • To get a return value or to determine when the request has returned, provide a succeeded callback function.
    • The callback function is invoked when the request has finished successfully, and it contains the return value (if any) from the Web method call.
    • Provide a failed callback function to handle errors.
    Web Services and JavaScript
  • 62. Web Services & JavaScript-Example
    • using System;
    • using System.Web;
    • using System.Collections;
    • using System.Web.Services;
    • using System.Xml;
    • using System.Web.Services.Protocols;
    • using System.Web.Script.Services;
    • [WebService(Namespace = &quot;http://tempuri.org/&quot;)]
    • [WebServiceBinding(ConformsTo =
    • WsiProfiles.BasicProfile1_1)]
    • [ScriptService]
    • public class ServerTime :
    • System.Web.Services.WebService
    • {
    • [WebMethod]
    • public string GetServerTime()
    • {
    • return String.Format(&quot;The server time is {0}.&quot;,
    • DateTime.Now);
    • }
    • }
    Web Services and JavaScript - Example
  • 63. Web Services & JavaScript-Example
    • <html xmlns=&quot;http://www.w3.org/1999/xhtml&quot;>
    • <head id=&quot;Head1&quot; runat=&quot;server&quot;>
    • <style type=&quot;text/css&quot;>
    • body { font: 11pt Trebuchet MS;
    • font-color: #000000;
    • padding-top: 72px;
    • text-align: center }
    • .text { font: 8pt Trebuchet MS }
    • </style>
    • <title>Simple Web Service</title>
    • <script type=&quot;text/javascript&quot;>
    • // This function calls the Web Service method.
    • function GetServerTime()
    • {
    • ServerTime.GetServerTime(OnSucceeded);
    • }
    • // This is the callback function that
    • // processes the Web Service return value.
    • function OnSucceeded(result)
    • {
    • var RsltElem = document.getElementById(&quot;Results&quot;);
    • RsltElem.innerHTML = result;
    • }
    • </script>
    • </head>
    • <body>
    • <form id=&quot;Form1&quot; runat=&quot;server&quot;>
    • <asp:ScriptManager runat=&quot;server&quot; ID=&quot;scriptManager&quot;>
    • <Services>
    • <asp:ServiceReference path=&quot;ServerTime.asmx&quot; />
    • </Services>
    • </asp:ScriptManager>
    • <div>
    • <h2>Server Time</h2>
    • <p>Calling a service that returns the current server time.</p>
    • <input id=&quot;EchoButton&quot; type=&quot;button&quot;
    • value=&quot;GetTime&quot; onclick=&quot;GetServerTime()&quot; />
    • </div>
    • </form>
    • <hr/>
    • <div>
    • <span id=&quot;Results&quot;></span>
    • </div>
    • </body>
    • </html>
    Web Services and JavaScript - Example
  • 64. Rich AJAX ToolKit Controls
    • The Toolkit is a shared source project with code contributions from developers from Microsoft and elsewhere.
    • The Toolkit contains some new controls that have AJAX functionality and a lot of control exten-ders. The control extenders attach to another control to enhance or “extend” the control’s functionality .
    • An extender is basically a server control that emits proper script code—the client behavior—to enhance how a given ASP.NET control behaves on the client
    Rich AJAX Toolkit Controls
  • 65. Server Reference
    • System.Web.Configuration The System.Web.Configuration namespace contains classes that enable in programmatically accessing configuration elements of Microsoft ASP.NET 2.0 AJAX Extensions.
    • System.Web.Handlers The System.Web.Handlers namespace contains HTTP handler classes that process HTTP requests to a Web server.
    • System.Web.Script.Serialization The System.Web.Script.Serialization namespace contains classes that provide JavaScript Object Notation (JSON) serialization and deserialization for managed types. It also provides extensibility features to customize serialization behavior.
    Server Reference
  • 66. Server Reference
    • System.Web.Script.Services The System.Web.Script.Services namespace provides attributes to customize Web service support for using Microsoft ASP.NET 2.0 AJAX Extensions.
    • System.Web.UI The System.Web.UI namespace provides classes and interfaces that enable client-server communication and rich UI through the use of the Microsoft ASP.NET 2.0 AJAX Extensions. 
    • System.Web.UI.Design The System.Web.UI.Design namespace contains classes that can be used to extend design-time support for Microsoft ASP.NET 2.0 AJAX Extensions. 
    Server Reference
  • 67. Client Reference
    • Global Namespace
      • Contains members and types that extend base ECMAScript (JavaScript) objects and that provide members that are more familiar to .NET developers. Includes extensions for the JavaScript Array, Boolean, Error, Number, Object, and String types.
    • Sys
      • Represents the root namespace for the Microsoft AJAX Library, which contains all fundamental classes and base classes.
    • Sys.Net
      • Contains types related to communication between ASP.NET AJAX client applications and Web services on the server.
    Client Reference
  • 68. Client Reference
    • Sys.Serialization
      • Contains types related to data serialization for ASP.NET AJAX client applications
    • Sys.Services
      • Contains types that provide client script access in ASP.NET AJAX to ASP.NET authentication service, profile service, and other application services.
    • Sys.UI
      • Contains types related to user interface (UI), such as controls, events, and UI properties in the Microsoft AJAX Library.
    • Sys.WebForms
      • Contains types related to partial-page rendering in the Microsoft AJAX Library.
    Client Reference
  • 69. Course Reference
    • Professional ASP.NET 2.0 AJAX
    • by Matt Gibbs and Dan Wahlin
    • Wrox Press © 2007
    • Introducing Microsoft ASP.NET AJAX
    • by Dino Esposito
    • Microsoft Press © 2007
    • ASP.NET AJAX UpdatePanel Control
    • by Matt Gibbs and Bertrand Le Roy
    • O'Reilly 2006
    • Beginning Ajax with ASP.NET
    • by Wallace B. McClure, Scott Cate, Paul Glavich and Craig Shoemaker
    • Wrox Press © 2006
    • www.asp.net/ajax
    Course Reference
  • 70. Questions / Feedback Thank You!