3.1 ASP.NET内置对象功能概要
学习目标
熟悉所有ASP.NET内置对象的功能概要,了解ASP.NET内置对象和ASP内置对象应用的区别。掌握Page对象的用法。
3.1.1 概述
在Web应用程序运行时,ASP.NET把一些经常使用的类的实例已经创建好了,用户可以直接使用而不需要再实例化这些类以此来方便用户编程,而创建好的这些类的实例就是ASP.NET的内置对象。下表列出了这些内置对象,同时也列出了生成这些实例的类。
3.1.2 ASP.NET对象和ASP对象的区别
与ASP相比,ASP.NET在很多方面有了显著的改进,这些方面包括:性能、状态管理、可缩放性、配置、部署、安全性、输出缓存控制、网络场支持和XML Web Services结构等。
如果用户具有ASP开发技能,则新的ASP.NET编程模型对用户来说将会是非常熟悉的。然而,ASP对象模型已经经历了重大改动而变得更加结构化和面向对象,因此大多数现有的ASP页必须做某种程度的修改以便在ASP.NET下运行。同样,对Visual Basic所做的重大更改还意味着用Visual Basic Scripting Edition编写的现有ASP页通常不能直接移植到ASP.NET,尽管在大多数情况下,必要的更改只涉及少数代码行。
大多数开发人员可能会选择重写现有的ASP应用程序,以便获得新的开发环境所具有的性能、可读性和可维护性方面的改进。但是,由于Web应用程序可以同时包含ASP页和ASP.NET页,因此没有必要立刻对整个Web应用程序的所有部分都进行转换。
ASP和ASP.NET可以同时在Internet信息服务(IIS)Web服务器上运行,它们互不干扰。ASP.NET只处理具有.aspx文件扩展名的文件;而具有.asp文件扩展名的文件将继续由现有ASP引擎处理。然而,应注意,在ASP和ASP.NET页之间并不共享会话状态和应用程序状态。
3.1.3 Page对象
Page对象总是充当ASP.NET页中所包含的所有服务器控件的一个最外围的命名容器。ASP.NET页中的所有控件总是属于Page对象。而系统同时也给Page对象本身定义很多成员,常用的成员有Title、IsPostBack、IsValid。
1.Page.Title
Page.Title获取或设置网页的标题。网页的标题通常是通过页面的标记元素“<title>标题</title>”来完成的,只是这样定义网页标题比较固定不灵活,而使用Page对象的Title属性可以方便地使用编程的方式给网页定义标题,而且可以根据时间、访问用户身份不同给网页灵活定义不同的标题信息。例如在任何网页代码窗口的Page_Load事件中编写如下代码就可以使得用户每天访问这个页面看到不同的网页标题信息(例如今天星期一,则标题显示“欢迎你访问我的站点,今天是:Monday”)。
protected void Page_Load(object sender, EventArgs e) { string title =“欢迎你访问我的站点,今天是:”; title += DateTime.Now.DayOfWeek.ToString(); Page.Title = title; }
2.Page.IsPostBack
Page.IsPostBack获取一个值,该值指示该页是否正为响应客户端回发而加载,或者它是否正被首次加载和访问。IsPostBack属性是Page对象中非常重要的一个属性,经常使用该属性判断用户到底是首次加载访问该页面,还是为响应客户端回发而加载。如果是为响应客户端回发而加载该页,则为true;如果首次加载访问该页面则为false。接下来举例说明该属性的使用方法。
(1)新建ASP.NET网站项目StudyObject,删除默认Default.aspx页面,添加页面StudyIsPostBack.aspx,并在工具箱中的“标准”选项卡中选择一个普通按钮控件添加到页面,布局页面如图3-1所示。
(2)在图3-1中直接双击“确定”按钮进入该按钮的代码编写窗口,编写如下代码用于测试。
protected void btnConfirm_Click(object sender, EventArgs e) { Response.Write("按钮单击显示的信息...<br>"); }
(3)同时在StudyIsPostBack.aspx.cs窗口中编写该网页的Page_Load事件代码如下,用于用户测试。
protected void Page_Load(object sender, EventArgs e) { if (!Page.IsPostBack) { //填写用户首次访问页面要执行的初始化代码,如控件数据信息绑定 的初始化代码等 Response.Write(“用户首次访问显示的信息...<br>”); } else { //填写用户访问的页面响应客户端回发而加载后要执行的代码 Response.Write(“用户响应客户端回发而加载后显示的信息...<br>”); } //用户每次访问页面都必须要执行的代码 //比如权限控制一个页面就必须在用户每次访问时都要执行 Page.Title =“学习IsPostBack”; Response.Write(“用户每次访问页面都要显示的信息...<br>”); }
(4)按Ctrl+F5组合键,组合键页面的首次运行效果如图3-2所示。
(5)这里很明显可以看出首次访问应该显示的信息都已经成功输出,而此时在图3-2中单击“确定”按钮,这就是客户端的回发信息到服务器,服务器对于该网页当然就是回传的过程,结果显示如图3-3所示。
(6)从图3-3中可以看出服务器回传的信息都已经成功输出,而首次访问应该输出的内容全部没有输出,并且可以看出所有控件事件代码的执行总是在Page_Load事件之后,所有按钮单击事件输出的信息在最后一行。
3.Page.IsValid
Page.IsValid获取一个值,该值指示页验证是否成功。此属性经常和自定义验证控件结合使用,当页面的验证全部通过时该属性返回true,否则返回false。示例可以参照第2章CustomValidator验证控件中的代码。