ASP.NET服务器控件

控件是图形用户界面的小型构建块,其中包括文本框,按钮,复选框,列表框,标签以及许多其他工具。使用这些工具,用户可以输入数据,进行选择并设置他们的偏好。

控件还用于结构化作业,如验证,数据访问,安全性,创建母版页和数据操作。

ASP.NET使用五种类型的Web控件,它们是:

  • HTML控件
  • HTML服务器控件
  • ASP.NET服务器控件
  • ASP.NET Ajax服务器控件
  • 用户控件和自定义控件

ASP.NET服务器控件是ASP.NET中使用的主要控件。这些控件可以分为以下几类:

  • 验证控件 - 用于验证用户输入,并通过运行客户端脚本进行工作。
  • 数据源控件 - 这些控件提供了与不同数据源的数据绑定。
  • 数据视图控件 - 这些是各种列表和表格,它们可以绑定到数据源中的数据进行显示。
  • 个性化控件 - 这些控件用于根据用户的喜好,根据用户信息对页面进行个性化设置。
  • 登录和安全控件 - 这些控件提供用户身份验证。
  • 母版页 - 这些控件在整个应用程序中提供一致的布局和界面。
  • 导航控件 - 这些控件有助于导航。 例如,菜单,树视图等
  • 富控件 - 这些控件实现特殊功能。 例如,AdRotatorFileUploadCalendar控件。

使用服务器控件的语法是:

<asp:controlType  ID ="ControlID" runat="server" Property1=value1  [Property2=value2] />

另外,visual studio 具有以下功能,可以帮助制作无误码:

  • 在设计视图中拖放控件
  • 智能感知功能,显示和自动完成属性
  • 属性窗口直接设置属性值

服务器控件的属性

具有可视方面的ASP.NET服务器控件是从WebControl类派生的,并继承了此类的所有属性,事件和方法。

WebControl类本身和一些其他不可视化呈现的服务器控件都是从System.Web.UI.Control类派生的。例如,PlaceHolder控件或XML控件。

ASP.Net服务器控件继承WebControlSystem.Web.UI.Control类的所有属性,事件和方法。

下表显示了所有服务器控件通用的继承属性:

编号 属性 描述
1 AccessKey Alt键按下此键将焦点移到控件上。
2 Attributes 它是任意属性(仅用于渲染)的集合,它们不与控件上的属性相对应。
3 BackColor 背景颜色。
4 BindingContainer 包含此控件的数据绑定的控件。
5 BorderColor 边框颜色。
6 BorderStyle 边框格式
7 BorderWidth 边框宽度
8 CausesValidation 指示是否验证。
9 ChildControlCreated 它指示服务器控件的子控件是否已创建。
10 ClientID HTML标记的控件ID。
11 Context 与服务器控件关联的HttpContext对象。
12 Controls 包含在控件中的所有控件的集合。
13 ControlStyle Web服务器控件的风格(样式)。
14 CssClass CSS类
15 DataItemContainer 如果命名容器实现了IDataItemContainer,则获取对命名容器的引用。
16 DataKeysContainer 如果命名容器实现了IDataKeysControl,则获取对命名容器的引用。
17 DesignMode 它指示控件是否在设计表面上使用。
18 DisabledCssClass 获取或设置CSS控件禁用时应用于呈现的HTML元素的CSS类。
19 Enabled 指示控件是否变灰。
20 EnableTheming 表示主题是否适用于控件。
21 EnableViewState 指示是否保持控件的视图状态。
22 Events 获取控件的事件处理程序委托的列表。
23 Font 字体
24 Forecolor 前景颜色。
25 HasAttributes 指示控件是否设置了属性。
26 HasChildViewState 指示当前服务器控件的子控件是否具有任何保存的视图状态设置。
28 Height 以像素或为单位来设置高度。
30 ID 控件的标识符。
31 IsChildControlStateCleared 指示此控件中包含的控件是否具有控件状态。
32 IsEnabled 获取一个指示控件是否启用值。
33 IsTrackingViewState 它指示服务器控件是否将更改保存到其视图状态。
34 IsViewStateEnabled 它指示是否对此控件启用视图状态。
35 LoadViewStateById 它指示控件是否参与通过ID而不是索引来加载其视图状态。
36 Page 包含该控件的页面。
37 Parent 父控件。
38 RenderingCompatibility 它指定了呈现的HTML将兼容的ASP.NET版本。
39 Site 在设计图面上呈现时承载当前控件的容器。
40 SkinID 获取或设置要应用于控件的外观。
41 Style 获取将在Web服务器控件的外部标记上呈现为样式属性的文本属性的集合。
42 TabIndex 获取或设置Web服务器控件的选项卡索引。
43 TagKey 获取对应于此Web服务器控件的HtmlTextWriterTag值。
44 TagName 获取控件标记的名称。
45 TemplateControl 包含此控件的模板。
46 TemplateSourceDirectory 获取包含此控件的页面或控件的虚拟目录。
47 ToolTip 获取或设置鼠标指针悬停在Web服务器控件上时显示的文本。
48 UniqueID 唯一标识符。
49 ViewState 获取状态信息的字典,该字典可跨多个同一页面的请求保存和恢复服务器控件的视图状态。
50 ViewStateIgnoreCase 它指出StateBag对象是否区分大小写。
51 ViewStateMode 获取或设置此控件的视图状态模式。
52 Visible 它指示服务器控件是否可见。
53 Width 获取或设置Web服务器控件的宽度。

服务器控件的方法

下表提供了服务器控件的方法:

编号 方法 描述
1 AddAttributesToRender 将需要呈现的HTML属性和样式添加到指定的HtmlTextWriterTag
2 AddedControl 在子控件添加到控件对象的控件集合后调用。
3 AddParsedSubObject 通知服务器控件已经解析了元素(XML或HTML),并将该元素添加到服务器控件的控件集合中。
4 ApplyStyleSheetSkin 将页面样式表中定义的样式属性应用于控件。
5 ClearCachedClientID 基础结构,将缓存的ClientID值设置为null
6 ClearChildControlState 删除服务器控件的子控件的控件状态信息。
7 ClearChildState 删除所有服务器控件的子控件的视图状态和控件状态信息。
8 ClearChildViewState 删除所有服务器控件的子控件的视图状态信息。
9 CreateChildControls 用于创建子控件。
10 CreateControlCollection 创建一个新的ControlCollection对象来保存子控件。
11 CreateControlStyle 创建用于实现所有样式相关属性的样式对象。
12 DataBind 将数据源绑定到服务器控件及其所有子控件。
13 DataBind(Boolean) 将数据源绑定到服务器控件及其所有子控件,并使用一个选项来引发DataBinding事件。
14 DataBindChildren 将数据源绑定到服务器控件的子控件。
15 Dispose 使服务器控件在从内存释放之前执行最终清理。
16 EnsureChildControls 确定服务器控件是否包含子控件。如果没有,则创建子控件。
17 EnsureID 为没有标识符的控件创建一个标识符。
18 Equals(Object) 确定指定的对象(Object)是否等于当前对象。
19 Finalize 在对象被垃圾回收回收之前,允许对象尝试释放资源并执行其他清理操作。
20 FindControl(String) 使用指定的id参数在当前命名容器中搜索服务器控件。
21 FindControl(String, Int32) 在当前命名容器中搜索具有指定标识和整数的服务器控件。
22 Focus 将输入焦点设置为控件。
23 GetDesignModeState 获取控件的设计时数据。
24 GetType 获取当前实例的类型。
25 GetUniqueIDRelativeTo 返回指定控件的UniqueID属性的前缀部分。
26 HasControls 确定服务器控件是否包含任何子控件。
27 HasEvents 指示是否为控件或任何子控件注册事件。
28 IsLiteralContent 确定服务器控件是否仅保存文字内容。
29 LoadControlState 恢复控制状态信息。
30 LoadViewState 恢复视图状态信息。
31 MapPathSecure 检索虚拟路径(绝对或相对)映射到的物理路径。
32 MemberwiseClone 创建当前对象的浅表副本。
33 MergeStyle 将指定样式的非空白元素复制到Web控件,但不覆盖控件的任何现有样式元素。
34 OnBubbleEvent 确定是否将服务器控件的事件传递给页面的UI服务器控件层次结构。
35 OnDataBinding 引发数据绑定事件。
36 OnInit 引发Init事件。
37 OnLoad 引发Load事件。
38 OnPreRender 引发PreRender事件。
39 OnUnload 引发Unload事件。
40 OpenFile 获取用于读取文件的流。
41 RemovedControl 在从控件对象的控件集合中删除子控件后调用。
42 Render 将控件呈现给指定的HTML编写器。
43 RenderBeginTag 将控件的HTML开始标记呈现给指定的写入器。
44 RenderChildren 将服务器控件的子项的内容输出到提供的HtmlTextWriter对象,该对象将要呈现的内容写入客户端。
45 RenderContents 将控件的内容呈现给指定的写入器。
46 RenderControl(HtmlTextWriter) 将服务器控件内容输出到提供的HtmlTextWriter对象,并在启用跟踪时存储有关该控件的跟踪信息。
47 RenderEndTag 将控件的HTML结束标记呈现给指定的写入器。
48 ResolveAdapter 获取负责渲染指定控件的控件适配器。
49 SaveControlState 保存页面发回服务器以来发生的所有服务器控件状态更改。
50 SaveViewState 保存TrackViewState方法被调用后修改的任何状态。
51 SetDesignModeState 为控件设置设计时数据。
52 ToString 返回表示当前对象的字符串。
53 TrackViewState 使控件跟踪其视图状态的更改,以便它们可以存储在对象的视图状态属性中。

示例

打开Visual Studio创建一个空的网站项目:ServerControls,如下所示 -

并在这个新的项目中,添加一个新的Web窗体文件 - Default.aspx

下面来看看服务器控件 - 一个树视图控件。 树视图控件位于导航控件下。 其他导航控件是:菜单控件和SiteMapPath控件。

在页面上添加一个树视图控件。 从任务中选择编辑节点使用树视图节点编辑器编辑每个节点,如下所示:

当创建了节点,在设计视图中看起来如下所示:

自动套用格式任务使用箭头,如下所示格式化树视图:

在页面上添加一个标签控件和一个文本框控件,分别命名为lblmessagetxtmessage

编写几行代码,以确保选择特定节点时,标签控件显示节点文本,文本框显示其下的所有子节点(如果有的话)。 现在Default.aspx的代码内容如下:

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <title>服务器控件示例</title>
</head>
<body>
    <form id="form1" runat="server">
        <div>
            <asp:TreeView ID="TreeView1" runat="server" ImageSet="Arrows" OnSelectedNodeChanged="TreeView1_SelectedNodeChanged1">
                <HoverNodeStyle Font-Underline="True" ForeColor="#5555DD" />
                <Nodes>
                    <asp:TreeNode Text="小牛技术有限公司" Value="小牛技术有限公司">
                        <asp:TreeNode Text="技术部" Value="技术部">
                            <asp:TreeNode Text="陈Java" Value="陈Java"></asp:TreeNode>
                            <asp:TreeNode Text="李PHP" Value="李PHP"></asp:TreeNode>
                            <asp:TreeNode Text="张MySQL" Value="张MySQL"></asp:TreeNode>
                        </asp:TreeNode>
                        <asp:TreeNode Text="市场部" Value="市场部">
                            <asp:TreeNode Text="李小双" Value="李小双"></asp:TreeNode>
                            <asp:TreeNode Text="罗十步" Value="罗十步"></asp:TreeNode>
                            <asp:TreeNode Text="渣渣辉" Value="渣渣辉"></asp:TreeNode>
                        </asp:TreeNode>
                    </asp:TreeNode>
                </Nodes>
                <NodeStyle Font-Names="Verdana" Font-Size="8pt" ForeColor="Black" HorizontalPadding="5px" NodeSpacing="0px" VerticalPadding="0px" />
                <ParentNodeStyle Font-Bold="False" />
                <SelectedNodeStyle Font-Underline="True" ForeColor="#5555DD" HorizontalPadding="0px" VerticalPadding="0px" />
            </asp:TreeView>
            <br />
            <asp:Label ID="txtmessage" runat="server"></asp:Label>
            <br />
            <asp:Label ID="lblmessage" runat="server"></asp:Label>
        </div>
    </form>
</body>
</html>

Default.aspx.cs 的代码内容如下:

using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;

using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;

using System.Xml.Linq;

public partial class _Default : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        txtmessage.Text = "Page_Load ";
    }

    protected void TreeView1_SelectedNodeChanged1(object sender, EventArgs e)
    {
        txtmessage.Text = " ";
        lblmessage.Text = "最近选择: " + TreeView1.SelectedNode.Text;
        TreeNodeCollection childnodes = TreeView1.SelectedNode.ChildNodes;

        if (childnodes != null)
        {
            txtmessage.Text = " ";

            foreach (TreeNode t in childnodes)
            {
                txtmessage.Text += ", "+t.Value;
            }
        }
    }
}

执行该页面以查看效果。可以看到现在能够展开和折叠节点。


上一篇: ASP.NET服务端 下一篇: ASP.NET HTML服务器