According to the online materials and all possible existing
references, there are typically two means, from the server side, to enable us
to expand the client-side functionalities of ASP.NET AJAX framework. The first
path to follow is to create a separate ExtenderControl (Listing
1 gives the class definition and Figure 1 depicts a more vivid hierarchical
tree for it), which encapsulates client capabilities in a behavior and that can
then be attached to an ASP.NET Web server control.
Listing 1
public abstract class ExtenderControl : Control, IExtenderControl{
// Fields
private IScriptManagerInternal _scriptManager;
private string _targetControlID;
// Methods
protected ExtenderControl();
internal ExtenderControl(IScriptManagerInternal scriptManager);
private static UpdatePanel FindUpdatePanel(Control control);
protected abstract IEnumerable<ScriptDescriptor>
GetScriptDescriptors(Control targetControl);
protected abstract IEnumerable<ScriptReference> GetScriptReferences();
protected override void OnPreRender(EventArgs e);
private void RegisterWithScriptManager();
protected override void Render(HtmlTextWriter writer);
IEnumerable<ScriptDescriptor> IExtenderControl.GetScriptDescriptors(
Control targetControl);
IEnumerable<ScriptReference> IExtenderControl.GetScriptReferences();
// Properties
private IScriptManagerInternal ScriptManager { get; }
[DefaultValue(""), ResourceDescription("ExtenderControl_TargetControlID"),
IDReferenceProperty, Category("Behavior")]
public string TargetControlID { get; set; }
[Browsable(false),
DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden),
EditorBrowsable(EditorBrowsableState.Never)]
public override bool Visible { get; set; }
}
Figure 1 - The hierarchical tree related to
ExtenderControl
As for the IExtenderControl Interface and all related
details, we will delve into them later on. For now, what we should be aware of
is that an extender control itself is not part of its associated controls; therefore,
we can create a single extender control that can be associated with several
types of ASP.NET Web server controls.