您的位置:首页 > 编程语言 > ASP

ASP.NET 3.5核心编程学习笔记(6):Web控件

2011-04-15 22:09 811 查看
  Web控件都定义在System.Web.UI.WebControls命名空间中。与HTML控件不同的是,Web控件提供的编程接口对传统的HTML属性和事件集合进行了重构。为此,Web控件在API的设计方面有时会显得更一致、更抽象,功能也更丰富。位于aspx页面中的Web控件都带有asp命名空间前缀。

Web控件的通性

WebControl类是所有Web控件的基类。

Web控件的属性



ControlStyle和ControlStyleCreated属性主要由控件开发者使用,Style属性通常供应用程序开发者用于设置当前控件的外部控件CSS属性。Style属性是通过CssStyleCollection类的实例实现,该类是一个简单的字符串集合。

Web控件的美化

ControlStyle属性的值为Style类型(注意与Style属性相区别)的对象。该类封装了控件的外观属性,它将一些属性(如BackColor、BoderColor、BoderWidth等)集合在一起。Style类的所有属性都为强类型。

示例代码:

MyControl.Style[“border-color”] = “blue”;
MyControl.BorderColor = Color.Red;


上面的代码,哪个设置会生效呢?当控件要呈现时,ControlStyle和Style的属性内容都会转换为HTML样式属性。ControlStyle属性会先被处理,如果设置有重叠,那么后处理的Style将最后生效。生成的Html代码如下所示:

Style=”border-color:Red;border-color:blue;”

Web控件的方法





Button控件

从ASP.NET 2.0开始,提供按钮功能的控件都实现了IButtonControl接口。实现该接口的控件有Button、ImageButton、LinkButton。

ASP.NET 2.0为Button引入了两个新属性:

OnClientClick:定义引发客户端onclick事件时执行的JavaScript函数名称。以下的代码是等效的:

Button1.OnClientClick = “showMessage()”;
Button1.Attributes[“onclick”] = “showMessage()”;


UseSubmitBehavior:默认情况下,Button类会被呈现为<input type=submit>标签。这样,它便利用浏览器的提交机制回发。如果UseSubmitBehavior为false,该控件被呈现为<input type=button>标签。这种情况下,该按钮仍为回发按钮,但控件的onclick客户端事件处理程序会绑定到一段由ASP.NET回发机制提供的JavaScript代码(__doPostBack函数)。

HyperLink控件

  创建指向另一Web页面的链接。

  NavigateUrl属性指示超链接所指向的URL。Target属性为显示目标URL的窗口或框架名称。

复选框与单选按钮

  复选框和单选按钮是通过<input>标签实现的,该标签的type属性会分别设置为checkbox和radio。复选框与单选按钮通过Text属性指定相关联的文本。HTML元素和相应的HTML控件都缺少设置复选框或单选按钮附近文本的属性。

  示例代码:

  <asp:checkbox runat="server" id="ctl" text="Check me" />


  最后生成的HTML为:

  <input type="checkbox" id="ctl" />
  <label for="ctl">Check me</label>


可滚动面板

  Panel控件将子控件集中在<div>区段中,允许开发者添加和移除控件,还支持样式信息。面板的水平和垂直滚动条是通过CSS样式中的overflow实现。

  示例代码:

  <asp:Panel ID="Panel1" runat="server" Height="85px" Width="400px" ScrollBars="Auto"              BorderStyle="Solid">
    <h2>Choose a technology</h2>
    <asp:CheckBox ID="box1" runat="server" Text="ASP.NET" /><br/>
    <asp:CheckBox ID="box2" runat="server" Text="JAVA" /><br/>
    <asp:CheckBox ID="box3" runat="server" Text="C++" />
  </asp:Panel>


文本控件

  向文本页面中插入文本最快捷的方式是通过Literal控件。如果需要标识,并以编程方式操纵某一特定字符串,我们应该使用Literal控件,或特性更丰富的Label控件。若需要在客户端对文本进行编辑,则可使用TextBox控件。

  Literal、Label、TextBox和列表控件实现了ITextControl接口,该接口包含一个Text属性。TextBox和列表控件还实现了IEditableTextControl接口,该接口定义了TextChanged事件。

  Label还定义了AssociatedControlID属性,该属性能接受页面中与该标签关联的另一控件(一般为输入控件,如TextBox)的ID。该属性改变了Label控件的呈现方式,如果未指定相关联控件,最后会生成<span>标签,否则是<label>标签。

  示例代码:

  <asp:Label ID="Label1" runat="server" Text="Sample text" />
  <asp:TextBox ID="TextBox1" runat="server" />

  该代码会生成以下标记:

  <span id="Label1">Sample text</span>
  <input name="TextBox1" type="text" id="TextBox1" />

  如果标签的AssociatedControlID被设置为TextBox1,则生成标记如下:

  <label for="TextBox1" id="Label1">Sample text</label>
  <input name="TextBox1" type="text" id="TextBox1" />

隐含字段与文件上传

  HiddenField和FileUpload控件相对于其对应的HTML控件,没有添加新功能,只是为系统完整性而添加。

  我们可使用编程方式添加HiddenField控件,示例代码:

  RegisterHiddenField("HiddenField1", "Great book!");

AdRotator控件

  AdRotator控件用于显示能够自动调节图像大小的图像按钮,每次刷新页面都会更新图像和URL。显示的图像和其他信息会遵照特定模式从XML文件中选取后读出。

Calendar控件

  Calendar控件用于显示月历,允许用户选日期及对月份进行前后导航。Calendar控件每次选择后都会进行回发。

  虽然它本身非常出色,功能也很强大,但出于性能的考虑,开发者更希望使用纯文本的文本框,以手动方式键入日期。

Xml控件

  Xml控件用于将XML文档的内容直接嵌入ASP.NET页面中。该控件能显示XML源或应用XSL转换的结果。Xml控件对应于XslTransform类,在内部利用了.NET Framework的XSLT转换类。

PlaceHolder控件

  PlaceHolder控件是WebControls命名空间中少数几个没有继承于WebControl类的控件之一。它继承于Control类,只在页面中充当其他控件的容器。PlaceHolder控件本身不会生成可视化的输出,仅限于通过其Controls集合动态地添加子控件。

  注意,每个动态添加到父控件Controls控件集合当中的控件,不会在回发生恢复。

View控件

  ASP.NET提供了两种相关控件,用于创建子控件的可互换面板组。MultiView用于定义视图组,每个视图由View类的实例表示。只有一个视图是活动的,在客户端呈现出来。View控件不能单独使用,仅能置于MultiView控件中。

  示例代码:

  <asp:MultiView runat="server" id="Tables">
    <asp:View runat="server" id="Employees">......</asp:View>
    <asp:View runat="server" id="Products">......</asp:View>
  </asp:MultiView>


验证控件

  验证控件继承于BaseValidator类,该类派生自Label类。页面中所有验证器会被自动归入Page类的Validators集合中。我们可使用Page类的Validate方法统一对所有控件进行验证,也可通过调用验证器的Validate方法逐一进行验证。Validate方法会对页面和每个验证器的IsValid属性进行设置。IsValid属性指示了用户的输入是否符合相应验证器的要求。除显式调用Validate方法外,用户的输入会在页面回发后自动被验证。

  BaseValidator类实现了IValidator接口,该接口包括Validate方法、IsValid属性和ErrorMessage属性。



BaseValidator类



  除比较验证器外,所有验证控件都直接继承于BaseValidator类。而对于比较验证器来说,在BaseValidator和本身的类之前还存在一个BaseCompareValidator类。

  每个验证器与其对应的输入控件间的连接是通过ControlToValidate属性建立的。该属性必须为输入控件的ID。

  并非所有服务器控件都能被验证,只有那些通过[ValidationProperty]特性指定的被验证属性的控件才可被验证。该特性接受一个属性名表示要检查的用户输入。以TextBox控件为例:

  [ValidationProperty("Text")]
  public class TextBox : WebControl, ITextControl
  { ...... }
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: