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 还具有以下功能,可帮助生成无错误编码:
在设计视图中拖放控件
显示和自动完成属性的智能感知功能
直接设置属性值的属性窗口
服务器控件的属性
具有可视化方面的 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 服务器控件的标签索引。 |
TagKey |
获取与此 Web 服务器控件对应的 HtmlTextWriterTag 值。 |
TagName |
获取控件标签的名称。 |
TemplateControl |
包含此控件的模板。 |
TemplateSourceDirectory |
获取包含此控件的页面或控件的虚拟目录。 |
ToolTip |
获取或设置鼠标指针悬停在 Web 服务器控件上时显示的文本。 |
UniqueID |
唯一标识符。 |
ViewState |
获取状态信息字典,用于跨同一页面的多个请求保存和恢复服务器控件的视图状态。 |
ViewStateIgnoreCase |
表示StateBag对象是否不区分大小写。 |
ViewStateMode |
获取或设置此控件的视图状态模式。 |
Visible |
表示服务器控件是否可见。 |
Width |
获取或设置 Web 服务器控件的宽度。 |
服务器控制方法
下表提供了服务器控件的方法:
方法 |
说明 |
AddAttributesToRender |
将需要渲染的 HTML 属性和样式添加到指定的 HtmlTextWriterTag。 |
AddedControl |
在将子控件添加到控件对象的 Controls 集合后调用。 |
AddParsedSubObject |
通知服务器控件解析了 XML 或 HTML 元素,并将该元素添加到服务器控件的控件集合中。 |
ApplyStyleSheetSkin |
将页面样式表中定义的样式属性应用于控件。 |
ClearCachedClientID |
基础设施。将缓存的 ClientID 值设置为 null。 |
ClearChildControlState |
删除服务器控件的子控件的控件状态信息。 |
ClearChildState |
删除所有服务器控件的子控件的视图状态和控件状态信息。 |
ClearChildViewState |
删除所有服务器控件的子控件的视图状态信息。 |
CreateChildControls |
用于创建子控件。 |
CreateControlCollection |
创建一个新的 ControlCollection 对象来保存子控件。 |
CreateControlStyle |
创建用于实现所有样式相关属性的样式对象。 |
CreateControlStyle |
将数据源绑定到服务器控件及其所有子控件。 |
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 |
获取用于读取文件的流。 |
RemovedControl |
从控件对象的控件集合中删除子控件后调用。 |
Render |
将控件呈现给指定的 HTML 编写器。 |
RenderBeginTag |
将控件的 HTML 开始标记呈现给指定的编写器。 |
RenderChildren |
将服务器控件的子控件的内容输出到提供的 HtmlTextWriter 对象,该对象写入要在客户端呈现的内容。 |
RenderContents |
将控件的内容呈现给指定的编写器。 |
RenderControl(HtmlTextWriter) |
将服务器控件内容输出到提供的 HtmlTextWriter 对象,并在启用跟踪时存储有关控件的跟踪信息。 |
RenderEndTag |
将控件的 HTML 结束标记呈现到指定的编写器中。 |
ResolveAdapter |
获取负责呈现指定控件的控件适配器。 |
SaveControlState |
保存自页面回发到服务器以来发生的任何服务器控件状态更改。 |
SaveViewState |
保存在调用 TrackViewState 方法后修改的任何状态。 |
SetDesignModeState |
为控件设置设计时数据。 |
ToString |
返回代表当前对象的字符串。 |
TrackViewState |
使控件跟踪对其视图状态的更改,以便将它们存储在对象的视图状态属性中。 |
示例
让我们看看一个特定的服务器控件-树视图控件。树视图控件位于导航控件之下。其他导航控件有:Menu 控件和 SiteMapPath 控件。
在页面上添加树视图控件。从任务中选择编辑节点...。使用树视图节点编辑器编辑每个节点,如下所示:
创建节点后,它在设计视图中如下所示:
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;
}
}
}
}
}
执行页面查看效果。您将能够展开和折叠节点。
