ASP.NET - 服务器控件

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

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

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

  • HTML控件

  • HTML服务器控件

  • ASP.NET服务器控件

  • ASP.NET Ajax服务器控件

  • 用户控件和自定义控件

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

  • 验证控件  - 这些用于验证用户输入并通过运行客户端脚本来工作.

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

  • 数据视图控件  - 这些是各种列表和表,可以绑定到数据源中的数据进行显示./p>

  • 个性化控件  - 这些用于根据用户偏好根据用户信息对页面进行个性化设置.

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

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

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

  • 丰富的控件  - 这些控件实现了特殊功能.例如,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它表示服务器控件的子控件是否具有已创建.
ClientIDHTML标记的控件ID.
Context与服务器控件关联的HttpContext对象.
Controls控件中包含的所有控件的集合.
ControlStyleWeb服务器控件的样式.
CssClassCSS class
DataItemContainer如果命名容器实现IDataI,则获取对命名容器的引用temContainer.
DataKeysContainer如果命名,则获取对命名容器的引用容器实现IDataKeysControl.
DesignMode它表示控件是否正在使用在设计图面上.
DisabledCssClass获取或设置CSS类为禁用该控件时应用于呈现的HTML元素.
Enabled指示控件是否显示为灰色.
EnableTheming表示主题是否适用到控件.
EnableViewState表示控件的视图状态维护.
Events获取事件处理程序委托的列表控制.
Font字体.
Forecolor前景色.
HasAttributes指示控件是否设置了属性.
HasChildViewState指示当前服务器控件的子控件是否具有任何已保存的视图状态设置.
Height以像素为单位的高度或%.
ID控件的标识符.
IsChildControlStateCleared指示此控件中包含的控件是否具有控件状态.
IsEnabled获取指示控件是否已启用的值.
IsTrackingViewState它表示是否服务器控件将更改保存到其视图状态.
IsViewStateEnabled它表示是否vi为此控件启用了新的状态.
LoadViewStateById它表示是否control参与通过ID而不是index来加载其视图状态.
Page包含控件的页面.
Parent父控件.
RenderingCompatibility它指定呈现的HTML将与之兼容的ASP.NET版本.
Site在a上呈现当前控件的容器设计表面.
SkinID获取或设置要应用于控制.
Style获取将呈现的文本属性的集合作为Web服务器控件的外部标记上的样式属性.
TabIndex获取或设置Web服务器控件的tab索引.
TagKey获取HtmlTextWriterTag值对应于此Web服务器控件.
TagName获取控件标记的名称.
TemplateControl包含此控件的模板.
TemplateSourceDirectory获取包含此控件的页面或控件的虚拟目录.
ToolTip获取或设置当鼠标指针悬停在Web服务器控件上时显示的文本.
UniqueID唯一标识符.
ViewState获取状态信息的字典,该字典信息可以跨同一页面的多个请求保存和恢复服务器控件的视图状态.
ViewStateIgnoreCase它指示StateBag对象是否不区分大小写.
ViewStateMode获取或设置视图状态模式o f.此控件.
Visible它表示服务器控件是否可见.
Width获取或设置Web服务器控件的宽度.

服务器控件的方法

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

方法描述
AddAttributesToRender添加HTML属性和需要渲染到指定的HtmlTextWriterTag的样式.
AddedControl被调用将子控件添加到控件对象的Controls集合之后.
AddParsedSubObject通知服务器控件解析了一个元素(XML或HTML),并将该元素添加到服务器控件的co中ntrol集合.
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获取design-t控件的ime数据.
GetType获取当前的类型实例.
GetUniqueIDRelativeTo返回此属性的UniqueID属性的前缀部分指定控件.
HasControls确定服务器控件是否包含任何子控件.
HasEvents表示是否为控件或任何子项注册了事件控件.
IsLiteralContent确定服务器控件是否仅包含文字内容.
LoadControlState恢复控制状态信息.
LoadViewState恢复视图状态信息.
MapPathSecure检索虚拟路径的物理路径,绝对路径或相对路径,m aps to.
MemberwiseClone创建当前对象的浅表副本.
MergeStyle将指定样式的任何非空白元素复制到Web控件,但不会覆盖控件的任何现有样式元素.
OnBubbleEvent确定服务器控件的事件是否向上传递到页面的UI服务器控件层次结构.
OnDataBinding引发数据绑定事件.
OnInit引发Init事件.
OnLoad引发加载事件.
OnPreRender引发PreRender事件.
OnUnload引发卸载事件.
OpenFile获取用于读取af的流ile.
RemovedControl从控件中删除子控件后调用控件对象的集合.
Render将控件渲染到指定的HTML编写器.
RenderBeginTag将控件的HTML开始标记呈现给指定的编写者.
RenderChildren输出服务器控件子项的内容提供的HtmlTextWriter对象,它写入要在客户端上呈现的内容.
RenderContents将控件的内容呈现给指定的编写者.
RenderControl(HtmlTextWriter)将服务器控件内容输出到提供的HtmlTextWriter对象如果启用了跟踪,则存储跟踪控件的信息.
RenderEndTag渲染控件的HTML结束标记到指定的编写器.
ResolveAdapter获取负责呈现指定控件的控件适配器.
SaveControlState保存自页面发回服务器以来发生的任何服务器控件状态更改.
SaveViewState保存调用TrackViewState方法后修改的任何状态.
SetDesignModeState设置控件的设计时数据.
ToString返回表示当前对象的字符串.
TrackViewState导致控件跟踪对其视图状态的更改,以便它们可以存储在对象的视图状态属性中.

示例

让我们看一下特定的服务器控件 - 树视图控件.树视图控件位于导航控件下.其他导航控件包括:菜单控件和SiteMapPath控件.

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

ASP.NET编辑节点

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

ASP.NET编辑节点2

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控制节点