ASP.NET基本控件
ASP.NET的核心是服务器端处理,然而,这种方式存在一些缺点,主要问题是:任何处理开始之前,都必须回传到服务器,甚至对于通过本地高速网络连接到服务器的Internet应用程序,也是如此,这将常常给用户带来显而易见的,无法接受的延迟体验,对于那些经过高速宽带连接的Internet应用程序而言,这种延迟似乎变得更加漫长。
客户端处理可为用户行为提供及时的响应,因此能够显著改善用户体验,它们可以使用诸如JavaScript或者VBScript这样的脚步语言实现,某些ASP.NET服务器控件使用客户端脚本,来提供用户行为响应,而不需要回传到服务器。
ASP.NET控件包括TextBox、Button、CheckBox、RadioButton、列表控件、表格和图片,同时,还讨论了多个控件的功能和属性,为了方便查看web服务器上有ASP.NET处理的页面,必须为包含文件的文件夹创建虚拟目录,同时需要在浏览器中通过localhost访问该页。
Label控件[ ]
使用Label控件可以显示文本,Label控件的Text属性包含要显示的文本字符串,Text属性只属于Label本身,而不是从Control类或WebControl类继承而来,Label控件的事件和方法都继承自Control或WebControl类,它没有自己的事件和方法。
TextBox控件[ ]
TextBox控件可以用于用户输入或显示只读文本,可以把它配置为单行或多行或接受密码,如果设置为多行,那么它将自动换行,除非Wrap属性设置为false,该控件包含的文本可以超出显示在页面上的控件的宽带,TextBox、DropDownList、Label和其它文本友好的控件都实现ITextControl接口,该接口是ASP.NET中新增的,它只是一个属性Text,它是控件的可视内容。
从ASP.NET服务器控件调用客户端代码是可能的,另外,ASP.NET服务器控件中的Button控件包含一个OnClientClick属性,该属性允许你指定客户端脚本,并且当按钮被单击是执行脚本,常规的HTML控件和HTML服务器控件包含许多时间,当它们被引发时,则可执行脚本,脚本包含在内容文件的脚本块,或者包含在控件声明的属性内。
名称 | 类型 | 读 | 写 | 值 | 说明 |
AutoPostBack | Boolean | --- | --- | true、false | 指示如果用户更改了控件的内容是否自动回发到服务器,如果false,则不回发到服务器,除非页面通过按钮或
AutoPostBack设置true的其他控件提交。默认为false |
Columns | Int32 | --- | --- | 0、1、2等 | 文本框以字符为单位的宽度,默认是0,表明该属性并未设置 |
MaxLength | Int32 | --- | --- | 0、1、2等 | 最多允许的字符数,如果MaxLength大于Columns,则只是显示一部分字符串,可以使用Home、End、箭头键查看其他部分。默认值为0,表示不强制限定输入到文本框中的字符数量 |
ReadOnly | --- | --- | ture、false | 如果为true,则用户不可以更改它的内容,但可以以编程的方式修改,默认为false | |
Rows | Int32 | --- | --- | 0、1、2等 | 多行文本框的文本行数量,默认是0,表示并不强制限定行数量 |
Text | String | --- | --- | TextBox的内容 | |
TextMode | TextBoxMode | --- | --- | SingleLine、MultiLine、Password | SingleLine:默认显示一行文本,MultiLine:显示多行文本并显示垂直滚动条即使Rows=1也是如此,文本换行自动适应文本框的宽带, 回车键输入一个回车/换行符。鼠标或Tab键可以让光标离开文本框,并且如果AutoPostBack设为true则引起回发。Password:显示为 星号,回发后会清空文本框,该值不区分大小写。 |
ValidationGroup | String | --- | --- | 指定验证组,如设置该属性,该控件成为验证组的成员。 | |
Wrap | Boolean | --- | --- | SingleLine、MultiLine、Password | 多行文本框中的文本是否可以换行,如果为false,则文本框将显示一个水平滚动条,默认为true |
除了继承自WebControl类的事件,例如Init、Load和PreRender,当文本框内容发生变化且失去焦点时,TextBox控件会触发TextChanged事件,除非把AutoPostBack属性设置为true,否则不会引起回发事件。
HiddenField控件[ ]
当Web开发者处理页面上的信息,又不想让用户看到该信息时,隐藏字段是一个很常用的小技巧,在传统的HTML页面中,可能会使用下面的代码段实行隐藏字段:
<input type="hidden" value="foo">
为了利用在服务器端处理的优势,可以给它添加id和runat属性后转换为HTML服务器控件:
<input type="hidden" value="foo" id="myHiddenControl" runat="server">
ASP.NET的HiddenField控件时最好的选择,因此它具有下面这些特征:
- 一致性编程
- 方便访问Value属性,该属性值有控件维护
- 从Control继承的ClientID属性,它提供了控件在客户端的ID属性
- 访问ValueChanged事件
当该控件的Vlaue属性不同于上一次提交的值时,将触发ValueChanged事件,该事件本身不引起回发,然而与大部分非回发控件不同,HiddedField控件没有公开AutoPostBack属性来强制及时回发,与所有的非回发控件一样,该时间将会被缓存,并一直到其他空间提交表单时才会有服务器处理。
Button控件[ ]
按钮控件将表单提交到服务器,从而激活服务器端处理进程,在System.Web.UI.WebControl命名空间中有3种ASP.NET按钮Button:标准按钮
- LinkButton:是介于标准按钮和HyperLink间的一类按钮,在用户看起来,LinkButton像一个超链接
- ImageButton:除了在浏览器上该按钮可以被图片替换,ImageButton控件和标准按钮完成一样的功能,ImageButton没有Text属性,但是,包含AlternateText属性,该属性用于指定在图像能显示的浏览器上显示的文本。
- LinkButton控件和Button控件最大的区别在于LinkButton的功能采用了客户端脚本实现。
另外,该控件的事件处理程序使用ImageClickEventArgs事件参数,该参数不同意Button和LinkButton控件的诗句处理程序,该事件参数公开两个字段,分别表示用户单击图片的X坐标和Y坐标,这些字段可以用于实现图片地图之类的功能。
除了继承自WebControl类的属性、方法和事件外,所有按钮都包含下面两个事件
- Click:该事件在控件被单击且没有与之相关联的命令时引发,该方法传递一个EventArgs类型的参数。
- Command:该事件在控件被单击且与命令名关联时引发,该事件传递一个CommandEventArgs类型的参数,它包含以下两个成员:
- CommandName(命令名)
- CommandArgument(命令参数的选项)
所有3中类型按钮都实现IButtonControl接口,这是ASP.NET2.0新增的接口,该接口要求实现Click和Command事件,以及Text和CausesValidation等属性。
HyperLink控件[ ]
HypeLink控件看起来类似于LinkButton控件,但二者有着本质不同:HyperLink控件不进行回发,而直接导航到目标URL,而LinkButton则提交表单,如果LinkButton的事件处理程序允许,它也可以导航到目标URL,HyperLink控件的行为与HTML控件非常相似。
HyperLink控件有4个特有属性:
- ImageUrl:显示图片路径。如果设置该属性,那么在用户看来,控件的外观和ImageButton一样,只不过ImageButton控件提交表单而HypeLink仅仅是导航。
- NavigateUrl:要链接的目标URL。
- Text:显示在浏览器中的链接文本,如果同时设置了Text和ImageUrl属性,将优先使用ImageUrl,文本只在图片无效时显示。如果浏览器支持工具提示,且没有设置ToolTip属性,那么,Text值将作为工具提示显示,如果设置了ToolTip属性,ToolTip文本则作为工具提示显示。
- Target:定义加载链接到页面的目标窗口或框架,该属性值不区分大小写,但必须从a到z的字符开头,以下画线开头的特殊值除外:
- _blank:将内容呈现在一个没有框架的新窗口中
- _new:未文档化,同_blank
- _parent:将内容呈现在hyperlink所在窗口或框架的父级窗口或框架汇中,如果这个子容器只是一个窗口或是顶级的框架,它的行为与_self相同。
- _self:在当前窗口或框架呈现内容并得到焦点,默认为该值。
- _top:在当前整个窗口(不含框架)中呈现内容
选择值[ ]
ASP.NET中有几个服务器控件可以让用户选择一个或多个值
- CheckBox:可以现在Boolean类型的数据
- CheckBoxList:CheckBox控件组,可以动态地创建且绑定到数据源
- ReadioButton:ReadioButton控件组,可以动态地创建并绑定到数据源
- ListBox:可以从列表中选择一项或多项
- DropDownList:类型于ListBox,但只允许选择一项。
- BulletedList:格式化的列表,可以被设置为简单的文本或链接
所有这些控件都继承自WebControl类,RadioButton 继承自CheckBox类,所有的列表控件都从ListControl类继承,下面介绍这些控件:
- CheckBox控件:CheckBox为用户提供了选择Boolean型数据的方法,如果把几个CheckBox控件排列在一起,那么,可以选择多个项,这些项之间互不排斥。
- RadioButton控件:RadioButton控件与CheckBox非常相似,两个类之间的本质区别在于,ReadioButton使用GroupName分组,且在组中同时只有一个RadioButton可以选中(Checked属性为true),把组中RadioButton的Check属性设置为true,则组中其余的RadioButton的checked属性设置为false,另外,RadioButton显示为圆形,而CheckBox显示方框。