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.

示例

让我们来看一个特定的服务器控件 - 树形视图控件。树形视图控件属于导航控件。其他导航控件包括:菜单控件和站点地图路径控件。

在页面上添加一个树形视图控件。从任务中选择“编辑节点…”。使用树形视图节点编辑器编辑每个节点,如所示

ASP.NET Edit Nodes

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

ASP.NET Edit Nodes2

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

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
广告