- 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 | 使控件跟踪对其视图状态的更改,以便可以将其存储在对象的视图状态属性中。 |
示例
让我们来看一个特定的服务器控件 - 树形视图控件。树形视图控件属于导航控件。其他导航控件包括:菜单控件和站点地图路径控件。
在页面上添加一个树形视图控件。从任务中选择“编辑节点…”。使用树形视图节点编辑器编辑每个节点,如所示
创建节点后,在设计视图中看起来如下所示
“自动格式化…”任务允许您格式化树形视图,如所示
在页面上添加一个标签控件和一个文本框控件,并分别将其命名为 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;
}
}
}
}
}
执行页面以查看效果。您将能够展开和折叠节点。