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 页面为 reposted 时,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 和超链接)类似,不同之处在于 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>

输出显示如下:

  • 一个
  • two
  • three

有关 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 控件的功能。
  • 您需要扩展内置控件的功能。
  • 您需要一个与当前存在的控件不同的控件。

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