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 服务器控件是包含属性的 runat=server HTML 元素。 HTML 服务器控件具有与其相应的 HTML 标记相同的 HTML 输出和相同的属性。 此外,HTML 服务器控件还提供自动状态管理和服务器端事件。 HTML 服务器控件具有以下优势:

  • HTML 服务器控件使用相应的 HTML 标记一对一映射。
  • 编译 ASP.NET 应用程序时,具有 runat=server 属性的 HTML 服务器控件将编译到程序集中。
  • 大多数控件都包含 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 />

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

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 控件包括可对其编程的其他方法、事件和属性。

有关 ASP.NET 中可用的单个 Web 控件的详细信息,请参阅以下网站:

验证控件

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

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

注意

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

列出控件

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

列表控件只能绑定到支持 IEnumerable、ICollection 或 IListSource 接口的集合。 例如,Visual 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>

输出如下所示:

  • 一个
  • three

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

丰富控件

除了上述控件外,ASP.NET 页框架还提供了一些特定于任务的控件,称为“富控件”。 丰富控件使用多个 HTML 元素生成,并包含丰富的功能。 丰富控件的示例包括日历控件和 AdRotator 控件。

有关 ASP.NET 中可用的单个富控件的详细信息,请参阅以下网站:

用户控件

通常,你可能想要重复使用 Web 窗体的用户界面,而无需编写任何额外的代码。 ASP.NET 可以将Web Forms转换为用户控件来执行此操作。 具有.ascx 文件扩展名的用户控件可以在单个 Web 窗体中多次使用。

若要将 Web 窗体转换为用户控件,请执行以下步骤:

  1. 删除所有 <html><head><body><form> 标记。
  2. 如果 指令 @ Page 出现在页面中,请将其更改为 @ Control
  3. 在 指令中包含 @ Control 属性className,以便在实例化用户控件时对其进行强类型化。
  4. 为控件提供描述性文件名,并将文件扩展名从 .aspx 更改为 .ascx。

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

自定义控件

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

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

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