《Programming ASP.NET》学习笔记(控件)

来源:互联网 发布:流星加速器下载软件 编辑:程序博客网 时间:2024/04/28 04:54

ASP.NET服务器控件

服务器控件包含方法以及与之关联的事件处理程序,并且这些代码都在服务器端执行。

如果控件包括可视化组成部分,那么ASP.NET将在检测目标浏览器接收能力的情况下,为浏览器呈现传统的HTML。
如果ASP.NET服务器控件需要利用客户端脚本,以实现某些功能,那么将会生成适应于浏览器类型的脚本,并发送给浏览器。然而,服务器端验证过程仍然执行。

提示:发送给客户端的是最普通的HTML代码,所以,ASP.NET应用程序可以运行在任何厂商的任何浏览器上。所有处理过程都在服务器端完成,同时,ASP.NET服务器控件在浏览器中,最终呈现为标准的HTML代码。另外,所发送的脚本并非是必须经过优化的。

ASP.NET服务器控件提供统一的编程模型。例如,input标签(<input>)可用于按钮、单行文本域、复选框、隐藏域和密码。
使用ASP.NET服务器控件时,每种不同的功能类型都将对应一种特定控件。
对于ASP.NET服务器控件而言,所有声明标记的属性都与控件类的属性相对应。
ASP.NET服务器控件包含了HTML控件可以提供的所有功能,甚至更多。

语法:
<asp:controltype id="ControlID" runat="server" thisproperty="this value" thatproperty="that value" />

提示:由于控件总是以asp开头,所以,这些控件有时又被认为是ASP控件。

asp: 标记前缀 控件标签,由于这些控件总是以asp开头,所以有时又被认为是ASP控件
controlType 控件的类型或类
id 属性 引用控件实例
runat 属性 告知服务器,该控件在服务器端运行

提示:
必须在每个控件的每次声明中都包括该属性。如果省略了它,并不会发生错误,但是控件将被忽略而不被呈现。
如果您省略ID属性,控件也将完全呈现出来,但是,该控件无法在代码中引用和操作。
尖括号必须明确关闭自身或者具有关闭元素。

许多ASP.NET服务器控件可以在打开和关闭标签之间使用内部HTML。
例如:
在TextBox控件中,可将Text属性指定为内部HTML
<asp:TextBox ID="txtBookName" runat="server" Width="250px">Enter a book name.</asp:TextBox>

可以使用服务器控件类的属性,来设置ASP.NET服务器控件的属性标记,并通过编程方式访问它们。
例如:
txtBookName.Text = "Programming ASP.NET";


注释代码

HTML
<!--在这里插入注释文本 -->

JavaScipt
//注释文本跟在后面//
/* 多行
注释 */

C#
// 注释文本跟在后面//
/* 多行
注释 */

VS2005 和 VBScript
' 注释文本跟在一个单引号后面
REM  注释也可以跟在REM关键字后面

Transact SQL
-- 注释文本跟在两个破折号后面
/* 多行
注释 */

XML注释
VS2005可以自动地在代码隐藏文件中将XML注释转换为良构的文档
/// 在C#中,XML注释跟在三个斜杠后面
''' 在VS2005中,注释跟在三个单引号后面


页面(.aspx)文件或用户控件(.ascx)文件
这些字符实际上表明服务器端代码,但是它们是注释,之后也不会再呈现,除非是有效的代码。
<% 在这里插入注释。%>

ASP.NET控件
在ASP.NET控件中没有注释。一些开发人员希望属性能用XX注释,因为任何未被识别的属性都将被忽略。

 

ASP.NET和浏览器

ASP.NET服务器控件由服务器端处理,并将标准的HTML发送至浏览器。

通过HttpRequest.Browser属性获得由哪个浏览器来显示页面
HttpRequest.Browser返回一个HttpBrowserCapabilities对象,该对象的很多属性都是Boolean值,例如,浏览器是否支持cookies、框架等。

服务器端将自动把HTML转换为适应客户端浏览器的接收能力的代码。
例如:
对于验证控件,如果客户端浏览器支持JavaScript,那么验证过程将在客户端进行,然后再在服务器端运行,如果浏览器不支持客户端脚本,那么验证将只在服务端完成。

在输出HTML代码中,除服务器控件外,所有控件都转换成传统的HTML标签,并且有一个名为_VIEWSTATE的隐藏域。这就是ASP.NET维持控件状态的方式。当页面提交到服务器端,并且重新显示时,控件无须重置它们的默认值。

 

ASP.NET服务器控件的类层次结构

所有呈现到浏览器的,具有可视化外观的ASP.NET服务器控件,都从WebControl类派生。
该类提供了所有ASP.NET服务器控件的通用属性、方法和事件。

WebControl类是从System.Web.UI.Control派生,而System.Web.UI.Control又从System.Object派生。
Control类提供了一些基本属性,以及一些基本方法,还包括一些生命周期事件。
从Control类派生的WebControl类和控件,位于System.Web.UI.WebControls命名空间中。

所有ASP.NET服务器控件常用的属性
名称   说明
AccessKey  按Alt键加上它的值,可以使控件得到焦点
BackColor  背景颜色
BorderColor  边框颜色
BorderStyle  边框样式。默认为NotSet
BorderWidth  边框的宽度。
CausesVali-dation 表示是否输入控件引发控件所需的验证。默认值为true
Controls  该控件所包含的所有控件对象的集合
CssClass  CSS类
Enabled   控件是否可用
EnableThem-ing  表示是否将主题应用到该控件
EnableView-State 表示该控件是否维持视图状态。默认值为true
Font   字体
ForeColor  前景色
Height   容器高度
ID   控件的可编程标识符
Parent   返回在页面控件层次结构中对该控件的父控件的引用
SkinID   应用到该控件的主题目录下的皮肤文件的详细信息
ToolTip 当鼠标移动到控件上方的时候显示出的文本字符串;在低版本的浏览器中呈现
Visible   是否呈现控件
Width   容器高度

 

CSS样式

层叠样式表(CSS)为整个站点应用提供了一种统一和一致样式的方式。

新建样式表项目,这样就在网站中添加了一个新样式表文件StyleSheet.css。
例如:
StyleSheet.css
body { FONT-SIZE: 12px; }
.button { FONT-SIZE: 14px; }
在body类名前没有点号,button类前面则有,说明是普通类。

在<head>元素内添加<style>元素
<style type="text/css">@import url(StyleSheet.css ); </style>

在控件中应用css
例如:
将Button的CssClass属性值设为button(区分大小写)
<asp:Button ID="Button1" runat="server" Text="Button" CssClass="button" />

 

HTML服务器控件

普通的HTML控件将直接被发送到客户端
HTML服务器控件能在服务器端处理

HTML控件添加runat="server"属性将转换为HTML服务器控件
例如:
HTML控件:
<input type="text" size="40">
HTML服务器控件:
<input type="text" id="BookTitle" size="40" runat="server">


使用HTML表格实现页面布局

服务器端控件消耗服务器资源,通常使用静态表格实现页面布局。
除非要引用表格元素,否则无须进行服务器端处理。


事件属性
事件前面应添加onServer
例如:
对于按钮点击事件应该是onServerClick

提示:如果希望控件在客户端处理事件,那么应使用onClick属性。在这种情况下,必须提供客户端脚本来处理事件。

同一个按钮控件中可以同时包含onClick和onServerClick属性。
这时将首先执行客户端代码,而后再运行服务器端代码。

任何HTML控件加上runat="server"属性,都可转换成服务器端处理。
所有容器控件,都允许通过编程方式访问控件内部的HTML。

所有HTML服务器控件都从System.Web.UI.Control类派生,都包含在System.Web.UI.HtmlControls命名空间之下。

 

客户端处理

ASP.NET的核心是服务器端处理。问题是:任何处理开始之前,都必须回传到服务器。
这将常常给用户带来显而易见的,无法接受的延迟体验。
客户端处理可为用户行为提供及时响应,可使用如JavaScript或VBScript等脚本语言来实现。

某些ASP.NET服务器控件使用客户端脚本,来提供用户行为响应,而不需要回传到服务器。典型的如,验证控件下载脚本到浏览器,那么,无效数据将在浏览器中被捕捉和

标记,而不需要回传到服务器。然而,在这些情况下,客户端脚本由ASP.NET提供,而开发人员则不用编写或管理脚本。

ASP.NET服务器控件可调用客户端代码
其中ASP.NET服务器控件中的Button控件包含一个OnClientClick属性,该属性允许您指定客户端脚本,并且当按钮被单击时执行脚本。

常用的HTML事件
事件  说明
onblur  当控件失去焦点时触发
onfocus  当控件接收焦点时触发
onclick  当控件被单击时触发
onchange 当控件的值发生修改时触发
onkeydown 当用户按键时触发
onkeypress 当用户按文字或数字键时触发
onkeyup  当用户松开键时触发
onmouseover 当鼠标指针移动到控件上时触发
onserverclick 当控件被单击时抛出一个ServerClick事件

注意:
对于HTML服务器控件onserverclick属性可以指定服务器脚本,onclick属性指定客户端脚本;对于ASP.NET服务器控件OnClientClickk属性可以指定客户端脚本,onclick属性指定服务器脚本。从ASP.NET服务器控件调用客户端脚本,本质上是一个非正式特性,它实际利用了一个有利条件来工作,即控件声明的任何属性,只要ASP.NET无法识别,就会不加修改地传递给浏览器。
例如onchange属性并不是ASP.NET服务器控件有效属性,就会直接传递给浏览器。