Adding Client Capabilities to Server Controls Using the ASP.NET AJAX Control Toolkit
Â
Adding Client Capabilities to Server Controls Using the ASP.NET AJAX Control Toolkit
In the preceding chapter, we covered the architecture of the AJAX Control Toolkit, describing at a high level what it has to offer and the attributes, classes, and interfaces that make it all happen. The enhanced functionality you get in the toolkit, from attribute-based programming to rich animations, provides a compelling alternative to coding against the ASP.NET 2.0 AJAX Extensions and the Microsoft AJAX Library directly. In this chapter, we delve into the details of the toolkit a little further as we develop a series of extender controls that demonstrate the rich features the toolkit provides.
Adding Client-Side Behavior Using the ExtenderControlBase
The ASP.NET AJAX Control Toolkit provides many features to assist in the development of extender controls, such as the automatic creation of $create
statements, the use of attributes to decorate extender control properties that should be included in the $create
statement creation, built-in designer support, and many more. In this section, we revisit the Image Rotator extender we created in Chapter 5, "Adding Client Capabilities to Server Controls," and re-create it using the ASP.NET AJAX Control Toolkit. This approach enables us to compare the alternatives as we build the new extender.
The process of building an extender control using the ASP.NET AJAX Control Toolkit consists of four main steps.
|
Visual Studio 2008 Extender Control Library Template
The ASP.NET AJAX Control Toolkit comes with full support for Visual Studio 2008 in the form of a project template that is geared toward creating an extender control library project. The template, shown in Figure 11.1, creates a library project structure (see Figure 11.2) that contains an extender control class, a designer class, and a JavaScript behavior class. In this section, we look at the ImageRotatorExtender.cs, ImageRotatorDesigner.cs, and ImageRotatorBehavior.js files that the template generated for us as we begin to discuss creating a new and improved ImageRotator
extender.
NOTE: Additional Template
The toolkit also comes with a template that generates the same files that can be used when you need to add additional extenders to an existing project, which can be found when you select Add New Item from a project.
The ImageRotatorExtender
class shown in Listing 11.1 serves as the basis for our ImageRotator
extender control. The class inherits from Extender ControlBase
and provides a template that contains most of the required entries for us, such as the web resource registration of our associated behavior class, class attributes that associate the designer for the extender, the client script to be downloaded, and the target type for the extender. The template also creates a default property, demonstrating the use of the ExtenderControlProperty
and DefaultValue
attributes and the use of the GetPropertyValue
method inside the property setter and getter.
NOTE: GetPropertyValue
Method Version
The version of the GetPropertyValue
method used by the template is an outdated one. When building out the class, we will change the implementation to use the GetPropertyValue<t>
version instead.
Listing 11.1 ImageRotatorExtender
Class
The ImageRotatorDesigner
class shown in Listing 11.2 will be the designer class for our ImageRotator
extender control. The designer class provides default designer functionality for our extender control during design time. We associate the designer with our ImageRotatorExtender
class by using the Designer
attribute, which is automatically added when we use the template. The ExtenderControlBaseDesigner<t>
class that the ImageRotatorDesigner
class inherits from makes it possible for the properties of our extender control to show up in the Properties window while the design-time focus is on the image control we are extending. This default behavior provides a more efficient way of working with extenders and the controls they are extending.
Listing 11.2 ImageRotatorDesigner
Class
The ImageRotatorBehavior
class shown in Listing 11.3 will be the clientside behavior class for our ImageRotator
extender control. The class consists of the same structure we used in Chapter 5, but now inherits from the AjaxControlToolkit.BehaviorBase
class, which provides added functionality for working with client state and interacting with the asynchronous request events of the Sys.WebForms.PageRequestManager
.
Listing 11.3 ImageRotatorBehavior
Class
URL: