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>

输出将如下所示:

  • 一个
  • 两种
  • 三种

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

丰富的控件

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

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

用户控件

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

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

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

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

自定义控件

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

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

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