ASP.NET 服务器控件


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

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

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

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

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

  • 验证控制 - 这些用于验证用户输入,它们通过运行客户端脚本来工作。

  • 数据源控件 - 这些控件提供对不同数据源的数据绑定。

  • 数据视图控件 - 这些是各种列表和表格,可以绑定到来自数据源的数据进行显示。

  • 个性化控制 - 这些用于根据用户信息根据用户偏好对页面进行个性化。

  • 登录和安全控制 - 这些控件提供用户身份验证。

  • 母版页 - 这些控件在整个应用程序中提供一致的布局和界面。

  • 导航控件 - 这些控件有助于导航。例如,菜单、树视图等。

  • 丰富的控件 - 这些控件实现了特殊功能。例如,AdRotator、FileUpload 和日历控件。

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

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

此外,Visual Studio 具有以下功能,以帮助生成无错误编码:

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

服务器控件的属性


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

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

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

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

Property 描述
访问密钥 使用 Alt 键同时按下此键可将焦点移至控件。
属性 它是与控件上的属性不对应的任意属性(仅用于呈现)的集合。
背景颜色 背景颜色。
绑定容器 包含此控件的数据绑定的控件。
边框颜色 边框颜色。
边框样式 边框样式。
边框宽度 边框宽度。
原因验证 指示它是否会导致验证。
子控件已创建 它指示是否已创建服务器控件的子控件。
ClientID HTML 标记的控件 ID。
Context 与服务器控件关联的 HttpContext 对象。
Controls 控件中包含的所有控件的集合。
控制风格 Web 服务器控件的样式。
CssClass CSS 类
数据项容器 如果命名容器实现 IDataItemContainer,则获取对命名容器的引用。
数据键容器 如果命名容器实现 IDataKeysControl,则获取对命名容器的引用。
设计模式 它指示控件是否正在设计图面上使用。
DisabledCss类 获取或设置在禁用控件时应用于呈现的 HTML 元素的 CSS 类。
Enabled 指示控件是否灰显。
启用主题 指示主题是否适用于控件。
启用视图状态 指示是否保持控件的视图状态。
Events 获取控件的事件处理程序委托列表。
Font Font.
前景色 前景色。
有属性 指示控件是否设置了属性。
HasChildViewState 指示当前服务器控件的子控件是否有任何已保存的视图状态设置。
Height 以像素或 % 为单位的高度。
ID 控件的标识符。
IsChildControlStateCleared 指示此控件中包含的控件是否具有控件状态。
已启用 获取一个值,该值指示控件是否已启用。
IsTrackingViewState 它指示服务器控件是否正在保存对其视图状态的更改。
IsViewStateEnabled 它指示是否为此控件启用视图状态。
LoadViewStateById 它指示控件是否通过 ID 而不是索引参与加载其视图状态。
Page 包含控件的页面。
Parent 家长控制。
渲染兼容性 它指定呈现的 HTML 将兼容的 ASP.NET 版本。
Site 在设计图面上呈现时承载当前控件的容器。
SkinID 获取或设置要应用于控件的外观。
Style 获取将在 Web 服务器控件的外部标记上呈现为样式属性的文本属性集合。
TabIndex 获取或设置 Web 服务器控件的选项卡索引。
TagKey 获取与此 Web 服务器控件对应的 HtmlTextWriterTag 值。
TagName 获取控件标记的名称。
模板控件 包含此控件的模板。
模板源目录 获取包含此控件的页面或控件的虚拟目录。
ToolTip 获取或设置当鼠标指针悬停在 Web 服务器控件上时显示的文本。
UniqueID 唯一标识符。
视图状态 获取状态信息字典,该字典保存和恢复服务器控件在同一页面的多个请求中的视图状态。
ViewStateIgnoreCase 它指示 StateBag 对象是否不区分大小写。
视图状态模式 获取或设置此控件的视图状态模式。
Visible 它指示服务器控件是否可见。
Width 获取或设置 Web 服务器控件的宽度。

服务器控件的方法


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

Method 描述
AddAttributesToRender 将需要呈现的 HTML 属性和样式添加到指定的 HtmlTextWriterTag。
添加控件 在子控件添加到控件对象的 Controls 集合后调用。
AddParsedSubObject 通知服务器控件已分析 XML 或 HTML 元素,并将该元素添加到服务器控件的控件集合中。
应用样式表皮肤 将页面样式表中定义的样式属性应用于控件。
ClearCachedClientID 基础设施。将缓存的 ClientID 值设置为 null。
清除子控件状态 删除服务器控件的子控件的控件状态信息。
清除子状态 删除所有服务器控件的子控件的视图状态和控件状态信息。
清除子视图状态 删除所有服务器控件的子控件的视图状态信息。
创建子控件 用于创建子控件。
创建控件集合 创建一个新的 ControlCollection 对象来保存子控件。
创建控件样式 创建用于实现所有与样式相关的属性的样式对象。
DataBind 将数据源绑定到服务器控件及其所有子控件。
数据绑定(布尔) 使用引发 DataBinding 事件的选项将数据源绑定到服务器控件及其所有子控件。
数据绑定儿童 将数据源绑定到服务器控件的子控件。
Dispose 使服务器控件能够在从内存中释放之前执行最终清理。
确保儿童控制 确定服务器控件是否包含子控件。如果没有,它会创建子控件。
EnsureID 为没有标识符的控件创建标识符。
等于(对象) 确定指定对象是否等于当前对象。
Finalize 允许对象在垃圾回收器回收对象之前尝试释放资源并执行其他清理操作。
查找控件(字符串) 在当前命名容器中搜索具有指定 id 参数的服务器控件。
FindControl(字符串,Int32) 在当前命名容器中搜索具有指定 id 和整数的服务器控件。
Focus 将输入焦点设置为控件。
获取设计模式状态 获取控件的设计时数据。
GetType 获取当前实例的类型。
获取唯一IDRelativeTo 返回指定控件的 UniqueID 属性的前缀部分。
有控件 确定服务器控件是否包含任何子控件。
有事件 指示是否为控件或任何子控件注册事件。
是文字内容 确定服务器控件是否仅包含文字内容。
负载控制状态 恢复控制状态信息。
加载视图状态 恢复视图状态信息。
MapPathSecure 检索虚拟路径(绝对或相对)映射到的物理路径。
会员克隆 创建当前对象的浅表副本。
合并样式 将指定样式的任何非空白元素复制到 Web 控件,但不覆盖控件的任何现有样式元素。
OnBubbleEvent 确定服务器控件的事件是否向上传递到页面的 UI 服务器控件层次结构。
数据绑定 引发数据绑定事件。
OnInit 引发 Init 事件。
OnLoad 引发加载事件。
预渲染 引发 PreRender 事件。
OnUnload 引发卸载事件。
OpenFile 获取用于读取文件的 Stream。
删除控件 从控件对象的控件集合中删除子控件后调用。
Render 将控件呈现给指定的 HTML 编写器。
渲染开始标签 将控件的 HTML 开始标记呈现给指定的编写器。
渲染儿童 将服务器控件子项的内容输出到提供的 HtmlTextWriter 对象,该对象写入要在客户端呈现的内容。
渲染内容 将控件的内容呈现给指定的编写器。
渲染控件(HtmlTextWriter) 如果启用了跟踪,则将服务器控件内容输出到提供的 HtmlTextWriter 对象并存储有关控件的跟踪信息。
渲染结束标签 将控件的 HTML 结束标记呈现到指定的编写器中。
解析适配器 获取负责呈现指定控件的控件适配器。
保存控制状态 保存自页面回发到服务器后发生的任何服务器控件状态更改。
保存视图状态 保存在调用 TrackViewState 方法后修改的任何状态。
设置设计模式状态 设置控件的设计时数据。
ToString 返回表示当前对象的字符串。
轨迹视图状态 使控件跟踪对其视图状态的更改,以便可以将它们存储在对象的视图状态属性中。

例子


让我们看一个特定的服务器控件——树视图控件。树视图控件位于导航控件之下。其他 Navigation 控件有:Menu 控件和 SiteMapPath 控件。

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

ASP.NET Edit Nodes

创建节点后,它在设计视图中如下所示:

ASP.NET Edit Nodes2

AutoFormat... 任务允许你格式化树视图,如下所示:

ASP.NET AutoFormat

在页面上添加标签控件和文本框控件,分别命名为 lblmessage 和 txtmessage。

编写几行代码,以确保选择特定节点时,标签控件显示节点文本,并且文本框在其下方显示所有子节点(如果有)。该文件背后的代码应如下所示:

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;
 
namespace eventdemo {
    public partial class treeviewdemo : System.Web.UI.Page {
   
        protected void Page_Load(object sender, EventArgs e) {
            txtmessage.Text = " ";
        }
      
        protected void TreeView1_SelectedNodeChanged(object sender, EventArgs e) {
      
            txtmessage.Text = " ";
            lblmessage.Text = "Selected node changed to: " + TreeView1.SelectedNode.Text;
            TreeNodeCollection childnodes = TreeView1.SelectedNode.ChildNodes;
         
            if(childnodes != null) {
                txtmessage.Text = " ";
            
                foreach (TreeNode t in childnodes) {
                    txtmessage.Text += t.Value;
                }
            }
        }
    }
}

执行页面查看效果。你将能够展开和折叠节点。

ASP.NET Control Nodes