
- ASP.NET 教程
- ASP.NET - 首页
- ASP.NET - 简介
- ASP.NET - 环境
- ASP.NET - 生命周期
- ASP.NET - 第一个示例
- ASP.NET - 事件处理
- ASP.NET - 服务器端
- ASP.NET - 服务器控件
- ASP.NET - HTML 服务器控件
- ASP.NET - 客户端
- ASP.NET - 基本控件
- ASP.NET - 指令
- ASP.NET - 状态管理
- ASP.NET - 验证器
- ASP.NET - 数据库访问
- ASP.NET - ADO.net
- ASP.NET - 文件上传
- ASP.NET - 广告轮播
- ASP.NET - 日历控件
- ASP.NET - 多视图
- ASP.NET - 面板控件
- ASP.NET - AJAX 控件
- ASP.NET - 数据源
- ASP.NET - 数据绑定
- ASP.NET - 自定义控件
- ASP.NET - 个性化
- ASP.NET - 错误处理
- ASP.NET - 调试
- ASP.NET - LINQ
- ASP.NET - 安全性
- ASP.NET - 数据缓存
- ASP.NET - Web 服务
- ASP.NET - 多线程
- ASP.NET - 配置
- ASP.NET - 部署
- ASP.NET 资源
- ASP.NET - 快速指南
- ASP.NET - 有用资源
- ASP.NET - 讨论
ASP.NET - 服务器控件
控件是图形用户界面的小型构建块,包括文本框、按钮、复选框、列表框、标签以及众多其他工具。用户可以使用这些工具输入数据、进行选择并指示其偏好。
控件还用于结构性工作,例如验证、数据访问、安全性、创建母版页以及数据操作。
ASP.NET 使用五种类型的 Web 控件,它们是
- HTML 控件
- HTML 服务器控件
- ASP.NET 服务器控件
- ASP.NET Ajax 服务器控件
- 用户控件和自定义控件
ASP.NET 服务器控件是 ASP.NET 中使用的主要控件。这些控件可以分为以下几类
验证控件 - 用于验证用户输入,它们通过运行客户端脚本工作。
数据源控件 - 这些控件提供与不同数据源的数据绑定。
数据视图控件 - 这些是各种列表和表格,可以绑定到数据源中的数据以进行显示。
个性化控件 - 用于根据用户的信息,根据用户偏好个性化页面。
登录和安全控件 - 这些控件提供用户身份验证。
母版页 - 这些控件在整个应用程序中提供一致的布局和界面。
导航控件 - 这些控件有助于导航。例如,菜单、树视图等。
富控件 - 这些控件实现特殊功能。例如,AdRotator、FileUpload 和 Calendar 控件。
使用服务器控件的语法为
<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 类的所有属性、事件和方法。
下表显示了所有服务器控件共有的继承属性
属性 | 描述 |
---|---|
AccessKey | 按此键与 Alt 键一起使用,将焦点移动到控件。 |
Attributes | 它是任意属性的集合(仅用于呈现),与控件上的属性不对应。 |
BackColor | 背景颜色。 |
BindingContainer | 包含此控件数据绑定的控件。 |
BorderColor | 边框颜色。 |
BorderStyle | 边框样式。 |
BorderWidth | 边框宽度。 |
CausesValidation | 指示它是否导致验证。 |
ChildControlCreated | 它指示服务器控件的子控件是否已创建。 |
ClientID | HTML 标记的控件 ID。 |
Context | 与服务器控件关联的 HttpContext 对象。 |
Controls | 控件中包含的所有控件的集合。 |
ControlStyle | Web 服务器控件的样式。 |
CssClass | CSS 类 |
DataItemContainer | 如果命名容器实现 IDataItemContainer,则获取对命名容器的引用。 |
DataKeysContainer | 如果命名容器实现 IDataKeysControl,则获取对命名容器的引用。 |
DesignMode | 它指示控件是否正在设计图面上使用。 |
DisabledCssClass | 获取或设置当控件禁用时应用于渲染的 HTML 元素的 CSS 类。 |
Enabled | 指示控件是否呈灰色显示。 |
EnableTheming | 指示主题是否应用于控件。 |
EnableViewState | 指示是否维护控件的视图状态。 |
Events | 获取控件的事件处理程序委托列表。 |
Font | 字体。 |
Forecolor | 前景色。 |
HasAttributes | 指示控件是否设置了属性。 |
HasChildViewState | 指示当前服务器控件的子控件是否具有任何保存的视图状态设置。 |
Height | 以像素或 % 为单位的高度。 |
ID | 控件的标识符。 |
IsChildControlStateCleared | 指示此控件中包含的控件是否具有控件状态。 |
IsEnabled | 获取一个值,该值指示控件是否已启用。 |
IsTrackingViewState | 它指示服务器控件是否正在保存对其视图状态的更改。 |
IsViewStateEnabled | 它指示此控件是否启用了视图状态。 |
LoadViewStateById | 它指示控件是否通过 ID 而不是索引参与加载其视图状态。 |
Page | 包含控件的页面。 |
Parent | 父控件。 |
RenderingCompatibility | 它指定渲染的 HTML 将与其兼容的 ASP.NET 版本。 |
Site | 在设计图面上呈现时承载当前控件的容器。 |
SkinID | 获取或设置要应用于控件的皮肤。 |
Style | 获取将作为 Web 服务器控件外部标记上的样式属性呈现的文本属性集合。 |
TabIndex | 获取或设置 Web 服务器控件的 Tab 索引。 |
TagKey | 获取与该 Web 服务器控件对应的 HtmlTextWriterTag 值。 |
TagName | 获取控件标记的名称。 |
TemplateControl | 包含此控件的模板。 |
TemplateSourceDirectory | 获取包含此控件的页面或控件的虚拟目录。 |
ToolTip | 获取或设置鼠标指针悬停在 Web 服务器控件上时显示的文本。 |
UniqueID | 唯一标识符。 |
ViewState | 获取状态信息的字典,该字典在同一页面的多个请求中保存和还原服务器控件的视图状态。 |
ViewStateIgnoreCase | 它指示 StateBag 对象是否不区分大小写。 |
ViewStateMode | 获取或设置此控件的视图状态模式。 |
Visible | 它指示服务器控件是否可见。 |
Width | 获取或设置 Web 服务器控件的宽度。 |
服务器控件的方法
下表提供了服务器控件的方法
方法 | 描述 |
---|---|
AddAttributesToRender | 添加需要呈现到指定的 HtmlTextWriterTag 的 HTML 属性和样式。 |
AddedControl | 在将子控件添加到控件对象的 Controls 集合后调用。 |
AddParsedSubObject | 通知服务器控件已解析元素(XML 或 HTML),并将元素添加到服务器控件的控件集合。 |
ApplyStyleSheetSkin | 将页面样式表中定义的样式属性应用于控件。 |
ClearCachedClientID | 基础结构。将缓存的 ClientID 值设置为 null。 |
ClearChildControlState | 删除服务器控件的子控件的控件状态信息。 |
ClearChildState | 删除所有服务器控件的子控件的视图状态和控件状态信息。 |
ClearChildViewState | 删除所有服务器控件的子控件的视图状态信息。 |
CreateChildControls | 用于创建子控件。 |
CreateControlCollection | 创建一个新的 ControlCollection 对象来保存子控件。 |
CreateControlStyle | 创建用于实现所有样式相关属性的样式对象。 |
DataBind | 将数据源绑定到服务器控件及其所有子控件。 |
DataBind(Boolean) | 将数据源绑定到服务器控件及其所有子控件,并可以选择引发 DataBinding 事件。 |
DataBindChildren | 将数据源绑定到服务器控件的子控件。 |
Dispose | 使服务器控件能够在从内存中释放之前执行最终清理操作。 |
EnsureChildControls | 确定服务器控件是否包含子控件。如果否,则创建子控件。 |
EnsureID | 为没有标识符的控件创建标识符。 |
Equals(Object) | 确定指定的对象是否等于当前对象。 |
Finalize | 允许对象尝试释放资源并在对象被垃圾回收之前执行其他清理操作。 |
FindControl(String) | 在当前命名容器中搜索具有指定 id 参数的服务器控件。 |
FindControl(String, Int32) | 在当前命名容器中搜索具有指定 id 和整数的服务器控件。 |
Focus | 将输入焦点设置为控件。 |
GetDesignModeState | 获取控件的设计时数据。 |
GetType | 获取当前实例的类型。 |
GetUniqueIDRelativeTo | 返回指定控件的 UniqueID 属性的前缀部分。 |
HasControls | 确定服务器控件是否包含任何子控件。 |
HasEvents | 指示控件或任何子控件是否注册了事件。 |
IsLiteralContent | 确定服务器控件是否仅保存文字内容。 |
LoadControlState | 还原控件状态信息。 |
LoadViewState | 恢复视图状态信息。 |
MapPathSecure | 检索虚拟路径(绝对或相对)映射到的物理路径。 |
MemberwiseClone | 创建当前对象的浅拷贝。 |
MergeStyle | 将指定样式中任何非空白元素复制到 Web 控件,但不覆盖控件的任何现有样式元素。 |
OnBubbleEvent | 确定服务器控件的事件是否向上传递到页面的 UI 服务器控件层次结构。 |
OnDataBinding | 引发数据绑定事件。 |
OnInit | 引发 Init 事件。 |
OnLoad | 引发 Load 事件。 |
OnPreRender | 引发 PreRender 事件。 |
OnUnload | 引发 Unload 事件。 |
OpenFile | 获取用于读取文件的 Stream。 |
RemovedControl | 在子控件从控件对象的控件集合中移除后调用。 |
Render | 将控件呈现到指定的 HTML 编写器。 |
RenderBeginTag | 将控件的 HTML 开启标签呈现到指定的编写器。 |
RenderChildren | 将服务器控件子元素的内容输出到提供的 HtmlTextWriter 对象,该对象写入要在客户端呈现的内容。 |
RenderContents | 将控件的内容呈现到指定的编写器。 |
RenderControl(HtmlTextWriter) | 将服务器控件内容输出到提供的 HtmlTextWriter 对象,并在启用跟踪时存储有关控件的跟踪信息。 |
RenderEndTag | 将控件的 HTML 关闭标签呈现到指定的编写器。 |
ResolveAdapter | 获取负责呈现指定控件的控件适配器。 |
SaveControlState | 保存自页面回发到服务器以来发生的任何服务器控件状态更改。 |
SaveViewState | 保存 TrackViewState 方法调用后修改的任何状态。 |
SetDesignModeState | 设置控件的设计时数据。 |
ToString | 返回表示当前对象的字符串。 |
TrackViewState | 使控件跟踪对其视图状态的更改,以便可以将其存储在对象的视图状态属性中。 |
Explore our latest online courses and learn new skills at your own pace. Enroll and become a certified expert to boost your career.
示例
让我们来看一个特定的服务器控件 - 树形视图控件。树形视图控件属于导航控件。其他导航控件包括:菜单控件和站点地图路径控件。
在页面上添加一个树形视图控件。从任务中选择“编辑节点…”。使用树形视图节点编辑器编辑每个节点,如所示

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

“自动格式化…”任务允许您格式化树形视图,如所示

在页面上添加一个标签控件和一个文本框控件,并分别将其命名为 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; } } } } }
执行页面以查看效果。您将能够展开和折叠节点。
