任务二 ASP.NET程序构成与处理过程
【任务要点】
1.掌握ASP.NET 4.5页面结构选项
2.掌握ASP.NET 4.5应用程序文件夹
3.掌握ASP.NET 4.5的页面指令
4.掌握ASP.NET 4.5的页面事件
在利用ASP.NET 4.5设计Web应用程序时,不可避免地要学会并掌握页面结构、指令、事件以及应用程序文件夹、Global.asax以及程序的编译。下面继续以“Hello World”为例讲解以上的知识点。
【具体步骤】
(1)打开Hello World后,分别切换到图1-7和图1-8所示的页面。下面来理解内置代码模型与后台编码模型。


(2)打开Default.aspx页面并单击【源】按钮,如图1-9所示。

(3)切换到Default.aspx.cs页面,如图1-10所示。

【背景知识】
一、ASP.NET页面结构选项
ASP.NET 为构造ASP.NET页面的代码提供了两条途径。第一条途径是利用内置代码模型。这个模型对ASP开发人员来说很熟悉,因为所有的代码都包含在一个.asp页面中。第二条途径是使用ASP.NET的后台编码模型,它允许把页面的业务逻辑代码与其显示逻辑代码分开。在这个模型中,页面的显示逻辑存储在.aspx页面中,业务逻辑存储在一个单独的一类文件.aspx.cs或.aspx.vb中。
下面介绍ASP.NET 2.0中的内置和后台编码模型。
(1)内置模型的优点是,业务逻辑和显示逻辑都包含在相同的文件中。开发人员发现,把所有的东西都放在一个可访问的实例中,可以使ASP.NET页面的处理更简单。另一个优点是Visual Studio 2005在处理内置编码模型和ASP.NET 2.0时提供了IntelliSense。过去,这个功能是不存在的。Visual Studio要求必须使用后台编码模型,如果非法操作,让页面使用内置模型,就会丢失IntelliSense功能。
(2)构建ASP.NET 2.0页面的另一个选项是使用新的后台编码模型建立文件。这里提出“新的后台编码模型”是因为,即使后台编码模型的理念与ASP.NET的以前版本相同,后台编码模型在ASP.NET 2.0中的使用方式也大不相同。使用这个新的ASP.NET 2.0后台编码模型的.aspx页面在Page指令有一些属性与ASP.NET的以前版本不同。第一个属性是CodeFile,这是Page指令的一个新属性,表示指向与这个显示页面一起使用的后台编码页面。在这个例子中,给它赋予的值是Default.aspx.vb或Default.aspx.cs。第二个需要的属性是Inherits,这个属性在ASP.NET的以前版本中也有,但很少使用。它指定编译页面时绑定到页面上的类名。指令在ASP.NET 2.0中非常简单。
二、页面指令
表1-1描述了ASP.NET 2.0中的指令。

三、页面事件
在ASP.NET页面的生命周期内,Page对象会公开一些被频繁使用的标准事件。ASP.NET页面框架在运行时,会自动连接到(连线)这些方法的相应代理实例。这样用户就无须编写必要的“粘接代码”。以下列举按激发顺序提供运行时连线的代理实例。
(1)Page_Init:出现此事件期间,用户可以初始化值或连接可能具有的任何事件处理程序。
(2)Page_Load:出现此事件期间,用户可以执行一系列的操作来首次创建ASP.NET页面或响应由投递引起的客户端事件。在此事件之前,已还原页面和控件视图状态。使用IsPostBack页面属性检查是否为首次处理该页面。如果是首次处理,请执行数据绑定。此外,请读取并更新控件属性。
(3)Page_DataBind:在页面级别调用DataBind方法时,将引发DataBind事件。如果在单个控件上调用DataBind,则它只激发它下面控件的DataBind事件。
(4)Page_PreRender:恰好在保存视图状态和呈现控件之前激发PreRender事件。用户可以使用此事件在控件上执行所有最后时刻操作。
(5)Page_Unload:完成页面呈现之后,将激发Page_Unload事件。此事件是执行最终清理工作的合适位置。这包括清理打开的数据库连接、丢弃对象或关闭打开的文件等操作。
以下列表概括了非确定性事件。
(1)Page_Error:如果在页面处理过程中出现未处理的例外,则激发Error事件。错误事件为用户提供了妥善处理错误的机会。
(2)Page_AbortTransaction:如果要指明交易是成功还是失败,交易事件非常有用。此事件通常用于购物车方案,其中此事件可以指示订购是成功还是失败。如果已终止交易,则激发此事件。
(3)Page_CommitTransaction:如果已成功提交交易,则激发此事件。
上面的页面事件是ASP.NET 2.0中的,以下粗略介绍ASP.NET 4.5主要新增功能与改进。
(1).NET for Windows Store Apps:Windows应用商店App为特定窗体因素而设计并利用Windows操作系统的功能。
(2)可移植类库。
(3)为新HTML5窗体类型的支持。
(4)提供用于 HTTP 应用程序的新编程接口。
(5)改进客户端脚本的处理通过改进页性能的绑定和缩减。
如果创建一个Web项目页面,并打开跟踪功能,就会看到主页面事件的启动顺序,它们按照下面的顺序启动:
(1)PreInit;
(2)Init;
(3)InitComplete;
(4)PreLoad;
(5)Load;
(6)LoadComplete;
(7)PreRender;
(8)PreRenderComplete;
(9)Unload
四、ASP.NET程序的编译
在浏览器中第一次引用ASP.NET页面时,请求会传送给ASP.NET解析器,ASP.NET解析器用该页面的语言创建类文件,该文件会根据其扩展名(.aspx)传送给ASP.NET解析器,因为ASP.NET知道,这个文件扩展名类型对其处理是有意义的。在创建了类文件后,类文件就被编译为DLL,然后写入Web服务器的磁盘。此时,实例化DLL并处理它,为ASP.NET页面的最初请求者生成输出。
下一个预编译选项常常称为用于部署的预编译。这是ASP.NET新增的一个优秀功能,它允许把应用程序编译为某些DLL,然后部署给客户、伙伴或其他地方。这么做不但需要的步骤非常少,而且应用程序在编译后,只需移动这些DLL和某些占位符文件,就可以让站点运转起来。也就是说,在部署时,Web站点的代码都放在DLL中。
五、Global.asax
ASP.NET应用程序只能有一个Global.asax文件,该文件支持许多项。
与处理.aspx页面中页面级的事件一样,也可以在Global.asax文件中处理应用程序的事件。除了这个代码示例中列出的事件之外,还可以在这个文件中构建如下所示的事件。
(1)Application_Start
(2)Session_Start
(3)Application_BeginRequest
(4)Application_AuthenticateRequest
(5)Application_Error
(6)Session_End
(7)Application_End
六、ASP.NET Web应用程序的组成
(1)一个在IIS信息服务器中的虚拟的目录。这个虚拟目录被配置为应用程序的根目录;
(2)一个或多个带.aspx扩展名的页面文件,还允许放入若干个.htm或.asp网页文件。当然用户可以以自己的方式来组织它们的目录结构;
(3)一个或多个Web.Config配置文件;
(4)一个以Global.asax命名的全局文件;(VS2015中是Startup.cs)

