ASP.NET 服务器控件概述

本文介绍 ASP.NET 控件,如 HTML 服务器控件、Web 服务器控件、列表控件等。

原始产品版本:  ASP.NET
原始 KB 编号:   306459

本文引用了以下 Microsoft .NET Framework类库命名空间:

  • System.Web.UI.HtmlControls.HtmlControl
  • System.Web.UI.WebControls.WebControl

页面框架中 ASP.NET 控件

此 ASP.NET 页框架包括许多内置服务器控件,旨在为 Web 提供更加结构化的编程模型。 这些控件提供以下功能:

  • 自动状态管理。
  • 无需使用 对象即可简单访问对象 Request 值。
  • 能够响应服务器端代码中的事件,以创建结构更好的应用程序。
  • 生成网页用户界面的常见方法。
  • 根据浏览器功能自动自定义输出。

除了内置控件之外,ASP.NET 页框架还提供创建用户控件和自定义控件的能力。 用户控件和自定义控件可以增强和扩展现有控件,以构建更加丰富的用户界面。

HTML 服务器控件

HTML 服务器控件是包含属性的 HTML runat=server 元素。 HTML 服务器控件与相应的 HTML 标记具有相同的 HTML 输出和属性。 此外,HTML 服务器控件提供自动状态管理和服务器端事件。 HTML 服务器控件具有以下优点:

  • HTML 服务器控件使用相应的 HTML 标记将一个映射到一个。
  • 编译 ASP.NET 时,具有 属性的 HTML 服务器控件 runat=server 将编译到程序集中。
  • 大多数控件 OnServerEvent 包括控件最常用的事件的 。 例如,控件 <input type=button> 有一 OnServerClick 个事件。
  • 未实现为特定 HTML 服务器控件的 HTML 标记仍可在服务器端使用;但是,它们作为 添加到程序集 HtmlGenericControl 中。
  • 当 ASP.NET 页面时,HTML 服务器控件将保留其值。

System.Web.UI.HtmlControls.HtmlControl基类包含所有常见属性。 HTML 服务器控件派生自此类。

若要使用 HTML 服务器控件,请使用以下语法 (它使用此控件 HtmlInputText 作为示例) :

<input type="text" value="hello world" runat=server />

有关这些网站中可用的单个 HTML 服务器控件 ASP.NET,请参阅以下网站:

Web 服务器控件

Web 控件类似于 HTML 服务器控件(如 Button、TextBox 和 Hyperlink),只不过 Web 控件具有一组标准化的属性名称。 Web 服务器控件具有以下优点:

  • 使制造商和开发人员能够更轻松地生成自动生成用户界面的工具或应用程序。
  • 简化创建交互式 Web 表单的过程,这无需了解 HTML 控件如何工作,并且使使用它们的任务不易出错。

System.Web.UI.WebControls.WebControl基类包含所有常见属性。 大多数 Web 服务器控件派生自此类。

若要使用 Web 服务器控件,请使用以下语法 (使用 TextBox 控件作为示例) :

<asp:textbox text="hello world" runat=server />

Web 服务器控件可分为四类:

  • 基本 Web 控件
  • 验证控件
  • 列表控件
  • 富控件

基本 Web 控件

基本 Web 控件提供的功能与 HTML 服务器控件对应项相同。 但是,基本 Web 控件包括其他方法、事件和属性,您可以针对这些方法、事件和属性进行编程。

有关这些网站中可用的单个 Web 控件 ASP.NET,请参阅以下网站:

验证控件

验证控件用于验证在页面的其他控件中输入的值。 验证控件执行客户端验证和/或服务器端验证,具体取决于显示页面的浏览器功能。 验证控件具有以下优点:

  • 可以将一个或多个验证控件与要验证的每个控件关联。
  • 提交页面表单时执行验证。
  • 您可以编程方式指定是否应该进行验证,如果要提供取消按钮,以便用户无需在所有字段中填充有效数据即可退出,这将非常有用。
  • 验证控件自动检测应在客户端还是服务器端执行验证。

备注

客户端验证在回发操作完成之前捕获错误。 因此,如果您在单个页面上具有客户端和服务器端验证控件的组合,则当客户端验证失败时,将抢占服务器端验证。有关这些网站中可用的单个验证控件 ASP.NET,请参阅以下网站:

列出控件

列表控件是支持绑定到集合的特殊 Web 服务器控件。 可以使用列表控件以自定义的模板格式显示数据行。 所有列表控件都公开 DataSource 和 DataMember 属性,这两个属性用于绑定到集合。

列表控件只能绑定到支持 IEnumerable、ICollection 或 IListSource 接口的集合。 例如,如下所示C# .NET 示例页:

<%@ Page Language="C#" %>
<script runat="server">
    Public void Page_Load()
    {
        String[] myStringArray = new String[] {"one","two","three"};
        rptr.DataSource = myStringArray;
        rptr.DataBind();
    }
</script>
<html>
    <body>
        <asp:repeater id=rptr runat="server">
            <itemtemplate><%# Container.DataItem %><br></itemtemplate>
        </asp:repeater>
    </body>
</html>

如下所示Visual Basic .NET 示例页:

<%@ Page Language="vb" %>
<script runat="server">
    public sub Page_Load()
        Dim myStringArray as String()
        myStringArray = new String() {"one","two","three"}
        rptr.DataSource = myStringArray
        rptr.DataBind()
    end sub
</script>
<html>
    <body>
        <asp:repeater id=rptr runat="server">
            <itemtemplate><%# Container.DataItem %><br></itemtemplate>
        </asp:repeater>
    </body>
</html>

输出如下所示:

  • 一个
  • two
  • three

有关在网站中可用的单个列表控件 ASP.NET,请参阅以下网站:

富控件

除了上述控件之外,ASP.NET 框架还提供一些特定于任务的控件,称为丰富控件。 丰富的控件是使用多个 HTML 元素构建的,并且包含丰富的功能。 富控件的示例包括 Calendar 控件和 AdRotator 控件。

有关这些网站中可用的单个丰富控件 ASP.NET,请参阅以下网站:

用户控件

通常,您可能需要重复使用 Web 表单的用户界面,而无需编写任何额外的代码。 ASP.NET 将你的控件转换为用户控件Web Forms可以实现这一点。 具有 .ascx 文件扩展名的用户控件可在单个 Web 表单中多次使用。

若要将 Web 表单转换为用户控件,请按照以下步骤操作:

  1. 删除所有 <html> 、 、 和 <head> <body> <form> 标记。
  2. 如果 @ Page 指令出现在页面中,请更改为 @ Control
  3. 在指令中包括一个属性,以便在您实例化用户控件时 className @ Control 强键入它。
  4. 为控件指定描述性文件名,将文件扩展名从 .aspx 更改为 .ascx。

有关用户控件详细信息,请参阅Web Forms控件

自定义控件

除了内置 Web 控件之外,ASP.NET 还允许您创建自己的自定义控件。 如果遇到以下情况之一,开发自定义控件可能会很有用:

  • 您需要组合两个或多个内置 Web 控件的功能。
  • 需要扩展内置控件的功能。
  • 您需要一个不同于当前存在的任何控件的控件。

有关开发自定义控件的信息,请参阅下列主题: