ASP.NET AJAX 扩展程序控件概述

更新:2007 年 11 月

ASP.NET AJAX 扩展程序控件增强了标准 ASP.NET Web 服务器控件的客户端功能。通过使用一个或多个扩展程序控件可以实现标准的 Web 服务器控件(如 TextBox 控件、Button 控件和 Panel 控件),从而在浏览器中提供更丰富的用户体验。例如,若要使用户在向服务器提交表单之前进行确认,可以使用将客户端功能添加到 Button 控件的扩展程序控件。

可以将 ASP.NET AJAX 扩展程序控件添加到 Visual Studio,并像使用其他控件那样使用这些控件。您还可以创建自己的扩展程序控件,或从其他源中获取扩展程序控件。

扩展程序控件的一个来源是 ASP.NET AJAX 控件工具包。控件工具包提供了一些示例和一个 SDK,这将使创建和重用自定义控件及扩展程序变得简单。可以从 ASP.NET AJAX 网站下载 ASP.NET AJAX 控件工具包。

Bb470384.alert_caution(zh-cn,VS.90).gif重要说明:

ASP.NET AJAX 控件工具包是一个由社区支持的库,Microsoft 并不支持。本主题讨论控件工具包中的扩展程序控件,作为如何使用扩展程序控件的示例。但是,您不应将本主题中的信息解释为:此处讨论的扩展程序控件是 ASP.NET 的正式组成部分或其支持的控件。

本主题包含有关以下内容的信息:

  • AJAX 扩展程序控件功能

  • 背景

  • 类参考

功能

Visual Studio 支持下面的扩展程序控件功能:

  • 添加扩展程序控件。

  • 移除扩展程序控件。

  • 设置扩展程序控件属性。

  • 管理扩展程序控件。

返回页首

背景

扩展程序控件可用于增强标准 Web 服务器控件的客户端功能。您并不使用这些控件本身,而是将它们附加到另一个 ASP.NET Web 服务器控件。通过将扩展程序控件的 TargetControlID 属性设置为要扩展的 Web 服务器控件的 ID,可将扩展程序控件附加到该服务器控件。

在 Visual Studio 中使用扩展程序控件

如果您安装了 ASP.NET AJAX 控件工具包,扩展程序控件将显示在**“工具箱”中扩展程序控件自己的选项卡中。“工具箱”的扩展程序控件部分只对网页显示,就像“工具箱”“标准”**部分一样。

Bb470384.alert_note(zh-cn,VS.90).gif说明:

ASP.NET AJAX 控件工具包是一个由社区支持的库。它不是 ASP.NET 的组成部分。

添加扩展程序控件

可以使用下面的方法将扩展程序控件添加到**“设计”**视图中的 Web 服务器控件:

  • 将扩展程序控件拖到 Web 服务器控件上。只能将扩展程序控件放到支持扩展程序控件的 Web 服务器控件上。当您将扩展程序控件拖到设计图面时,指针会指示您是否可以将该扩展程序控件放到 Web 服务器控件上。

  • 右击该 Web 服务器控件,然后单击**“添加扩展程序”**。

  • 选择**“按钮任务”智能标记,然后单击“添加扩展程序”**。

    Bb470384.alert_note(zh-cn,VS.90).gif说明:

    “设计”视图中,通常不显示扩展程序控件。但是,如果发生与扩展程序控件相关的错误,则显示该扩展程序控件。

在设计器中添加扩展程序时,扩展程序控件的 TargetControlID 属性设置为附加的 Web 服务器控件。扩展程序控件的名称基于它附加到的 Web 服务器控件的名称。

扩展程序控件可能支持您可以配置的用户界面 (UI) 元素。如果是这样,您可以使用已扩展的 Web 服务器控件的智能标记菜单设置这些元素。

如果扩展程序控件附加到目标控件,则扩展程序控件不会显示在设计图面中。如果扩展程序控件未附加到目标控件,或者如果设计时不能确定关联,则扩展程序控件在设计图面中显示为占位符。在以下情况下,可能出现此结果:

如果将扩展程序控件附加到有效的目标控件,Visual Studio 将在**“属性”**窗口中隐藏下列扩展程序控件属性:

  • TargetControlID

  • EnableViewState(从 Control 继承)

  • ID(从 Control 继承)

有关如何将扩展程序控件添加到 Web 服务器控件的更多信息,请参见演练:ASP.NET AJAX 扩展程序控件

移除扩展程序控件

执行以下操作可以移除扩展程序控件和 Web 服务器控件之间的关联:

  • 在**“设计”视图中右击 Web 服务器控件,再单击“删除扩展程序”**,然后选择要移除的扩展程序控件。

  • 在**“设计”视图中选择“按钮任务”智能标记,再单击“删除扩展程序”**,然后选择要移除的扩展程序控件。

  • 在**“源”**视图中删除扩展程序控件标记。

扩展程序控件和 ScriptManager 控件

ExtenderControl 类派生的扩展程序控件要求页面上有 ScriptManager 控件。ExtenderControl 基类会执行测试以确保页面上存在 ScriptManager 控件。

但如果要创建不需要 ScriptManager 控件的扩展程序控件,则可以直接创建实现 IExtenderControl 接口的类。此外,如果要创建从 Control 派生的类,或要扩展从 Control 派生的现有控件,则可以实现自己的 IExtenderControl 接口。

IExtenderControl 接口通过调用 GetScriptReferences 方法为控件注册脚本库。它通过调用 GetScriptDescriptors 方法注册 ScriptDescriptor 对象。GetScriptDescriptors 方法返回 ScriptDescriptor 对象的 IEnumerable 列表。

Bb470384.alert_note(zh-cn,VS.90).gif说明:

如果要扩展从 WebControl 类派生的现有控件类型,请实现 IScriptControl 接口。

有关如何创建 ASP.NET AJAX 扩展程序控件的更多信息,请参见向 Web 服务器控件添加客户端功能

AJAX 控件工具包中的扩展程序控件

下表介绍 ASP.NET AJAX 控件工具包中可用的部分 AJAX 扩展程序控件。

Bb470384.alert_note(zh-cn,VS.90).gif说明:

ASP.NET AJAX 控件工具包是一个由社区支持的库。它不是 ASP.NET 的组成部分。库的内容和各个控件的功能可能会有所更改。

AJAX 扩展程序控件

说明

CascadingDropDown

根据在另一 DropDownList 控件中的选择,动态填充 DropDownList 控件。此扩展程序控件附加到 DropDownList 控件。

如果一个 DropDownList 控件的选择发生更改,则 CascadingDropDown 扩展程序控件会调用指定的 Web 服务以检索一列值,这些值用于填充集中的下一个 DropDownList

CollapsiblePanelExtender

使可折叠部分能够添加到网页中。

此扩展程序控件附加到 UpdatePanel 控件。

可以指定可展开或折叠 UpdatePanel 控件的 Web 服务器控件。或者,可以将 UpdatePanel 设置为当用户将鼠标指针置于该控件上时该控件自动展开或折叠。

ConfirmButtonExtender

单击 Button 控件后、将该页或 UpdatePanel 提交给服务器之前,显示确认消息框。如果用户取消,则不提交该页。

此扩展程序控件附加到 Button 控件。

FilteredTextBoxExtender

防止用户在 TextBox 控件中键入特定的字符。

此扩展程序控件附加到 TextBox 控件。

ModalPopupExtender

使内容能够显示,但阻止用户与页面其余内容交互。

此扩展程序控件可附加到用于打开模式窗口的任何 Web 服务器控件。

PasswordStrength

显示密码的强度。

此扩展程序控件附加到 TextBox 控件。

RoundedCornersExtender

对现有元素应用圆角。

此扩展程序控件通常附加到 Panel 控件。

TextBoxWatermarkExtender

文本框不包含文本值时,显示 TextBox 控件中的消息。

此扩展程序控件附加到 TextBox 控件。

设置扩展程序控件属性

在**“属性”**窗口中可以设置扩展程序控件属性。一些扩展程序控件还提供附加的 UI 元素,您可以通过 Web 服务器控件的智能标记菜单访问这些元素。

如果 Web 服务器控件已扩展,**“属性”窗口将显示名为“扩展程序”**的新类别。在此部分中,对于已添加到 Web 服务器控件的每个扩展程序控件,将显示新的多级属性。每个扩展程序控件都提供特定于该控件的独特属性。

有关如何设置 Web 服务器控件属性的更多信息,请参见如何:在 Visual Web Developer 中启用“属性”窗口

管理扩展程序控件

因为扩展程序控件在**“设计”**视图中不直接显示 UI,所以您是将这些控件作为所添加到的控件的一部分来管理的。如果将 Web 服务器控件移到其他位置或放入另一个控件,则附加的扩展程序控件也将移动。

对 Web 服务器控件进行标记后将直接包括扩展程序控件的标记。如果多个扩展程序控件附加到一个 Web 服务器控件,则无论如何移动,扩展程序控件的顺序都不会发生变化。这可以减少在运行时发生冲突的机会。

从设计图面删除带有附加扩展程序控件的 Web 服务器控件时,也会删除关联的扩展程序。如果在**“属性”**窗口中更改了带有附加了扩展程序控件的 Web 服务器控件的 ID 属性,则扩展程序控件的 TargetControlID 属性和 ID 将得到更新,以相互匹配。

Bb470384.alert_note(zh-cn,VS.90).gif说明:

如果扩展程序具有自定义 ID(例如,您提供的 ID),则 ID 属性不会随着任何关联 Web 服务器控件的 ID 属性的更改而发生变化。

如果将带有附加了扩展程序控件的 Web 服务器控件剪切或复制到剪贴板,则剪贴板上的复件将包含关联的扩展程序控件。它们作为标记复制,紧跟在控件之后。即使在源中(扩展程序标记不与控件相邻)也会如此。粘贴 Web 服务器控件时,也会粘贴扩展程序控件。

如果扩展程序控件的标记中引入了错误,该错误将在**“设计”视图中显示,错误消息指明“呈现控件时出错”。若要更正此错误,请在“源”**视图中更正标记。

返回页首

类参考

下表列出了扩展程序控件的关键服务器类。

说明

ExtenderControl

为扩展程序控件提供抽象基类。

IExtenderControl

定义扩展程序控件的行为。

返回页首

请参见

任务

演练:ASP.NET AJAX 扩展程序控件