第二十一讲 ASP.NET页面框架

*摘要

。ASP.NET页面简介

。页面生存周期

。页面事件

。页面指令

。内联编程型与代码隐藏编程模型

*ASP.NET页面

。ASP.NET页框架是一种编程框架,它在Web服务器上运行动态地生成和管理Web窗体页。可以使用Web窗体页来创建可编程的Web页,这些

Web页用作Web应用程序的用户界面。

。Web窗体页在任何浏览器或客户端设备中向用户提供信息,并使用服务器端代码来实现应用程序逻辑。

。Web窗体页输出几乎可以包含任何支持HTTP的语言(包括HTML,XML,WML和ECMAScript(JScript,JavaScript))

Web窗体页的特点

。基于Microsoft ASP.NET技术。在该技术中,在服务器上运行的代码动态地生成到浏览器或客户端设备的Web页输出。

。兼容所有浏览器或移动设备。Web窗体页自动为样式,布局等功能呈现正确的,符合浏览器的HTML。

。兼容.NET公共语言运行库所支持的任何语言

。基于Microsoft.NET框架生成

。在Visual Studio中通过强大的快速应用程序开发(RAD)工具受到支持

。具有灵活性,因为您可以向它们添加用户创建的控件和第三方控件。

*单文件Web窗体页

。除了由.aspx文件和单独的类文件组成的页之外,ASP.NET结构还支持“单文件”模型,在此模型中,UI元素和代码位于同一文件中。

。单文件页的处理文件存一些不同之处:

-不会将该页的代码编译成一个单独的类,然后从该类派生.aspx文件。相反,.aspx文件将直接从Page类派生。

-当部署该页时,由于源代码在物理上位于.aspx文件中,所有源代码将与Web窗体页一起部署。

*Web页面处理过程

。页面的一次往返处理:用户对Server Control的一次操作,就可能引起页面的一次往返处理:页面被提交到服务器端,执行响应的事件

处理代码,重建页面,然后返回到客户端

。页面重建:每一次页面被请求,或者页面事件被提交到服务器,asp.net运行环境将执行必要的代码,重建整个页面,把结果页面送到

浏览器,然后抛弃页面的变量,控件的状态和属性等等页面信息。

*页面事件

以下列表按激发顺序提供运行时连线的代理实例:

。Page_Init:初始化值或连接

。Page_Load:出现此事件期间,您可以执行一系列的操作来首次创建ASP.NET页面或响应由投递引起的客户端事件。在此事件之前,已还

原页面和控件视图状态。使用IsPostBack页面属性检查是否为首次处理该页面。如果是首次处理,请执行数据绑定。此外,请读取并更新

控件属性。

。Page_DataBind:在页面级别调用DataBind,也可在单个控件上调用DataBindPage_PreRender:恰好在保存视图状态和呈现控件之前激

发PreRender事件。

。Page_Unload:此事件是执行最终清理工作的合适位置。

*非确定性事件

。Page_Error:如果在页面处理过程中出理未处理的例外,则激发Error事件。错误事件为您提供了妥善处理错误的机会。

。Page_AbortTransaction:如果要指明交易是成功还是失败,交易事件非常有用。此事件通常用于购物车方案,其中此事件可以指示订

购是成功还是失败。如果已终止交易,则激发此事件。

。Page_CommitTransaction:如果已成功提交交易,则激发此事件。

Global.asax

Global.asax是干什么的?

。Global.asax文件也称为ASP.NET应用程序文件,它一般被放在根目录下。此文件中的代码不产生用户界面,也不相应单个页面的请求。

。它主要是负责处理Application_Start,Application_End,Session_Start,Session_End事件的。

*Application和Session事件

。当Application对象的生命周期开始时,Application_Start事件会被启动,当Application对象的生命周期结束时Application_End事件

会被启动。

。当有一个新用户访问应用程序时,就会立刻触发Session_Start事件。当某个用户停止了访问或者程序执行了Session.Abandon方法,就

会触发Session_End事件。

。一个Application_End事件肯定发生在Session_End事件之后,Application_End事件只有在服务器停止工作或Application_End事件卸载

时才触发。

Global.asax中的事件

事件函数 描述

Application_start:应用程序启动时激发

Application_BeginRequeset:HTTP请求开始时激发

Application_AuthenticateRequest:应用程序批准HTTP请求时激发

Session_Start:会话启动时激发

Application_EndRequest:HTTP请求结束时激发

Session_End:会话结束时激发

Application_End:应用程序结束时激发

Application_Error:发生错误时激发

*页面指令

。页面指令指定页面编译器在处理文件时使用的可选设置。页面指令位于页面文件的顶部,使用以下语法:

-<%@ directive{attribute=value}* %>

。ASP.NET页面支持下列指令:

-@Page

-@Implements

-@Import

-@Register

-@Assembly

-@Reference

-@OutputCache

@Import

。命名空间的导入

。示例:

-<%@ import anmespace="System.NET" %>

-导入类库

-有点相似于#include<Stdio.h>

@register

。自定义控件声明

。示例如下:

-<%@ Register TagPrefix="saidy" TagName="info" Src="con01.ascx" %>

@page

。语法形式如下:

-<%@ page language="VB" contentType="text/html" ResponseEncoding="gb2312" %>

。参数

-Language

。示例:Language="VB"

。示例:Language="C#"

@page

-Debug

。指示是否应使用调试符号编译页。如果应使用调试符号编译该页,则为true;否则为false。

。示例:debug="true"

-Buffer

。确定是否启用HTTP响应缓冲。如查启用页缓冲,则为true;否则为false。默认值为true。

。示例:buffer=true

@page

。参数

-AutoEventWireup

。指示页的事件是否自动连网。如果启用事件自动连网,则为true;否则为false。默认值为true。

-ErrorPage

。定义在出现末处理页异常时用重定向的目录URL

。ErrorPage=error.htm

*内联编程模型与代码隐藏编程模型

ASP.NET支持两种模式的页面开发:

。在.aspx文件的<script runat="server">块内写入页面逻辑代码,然后在服务器上首次请求该页面时动态编译代码。

。在外部类中写入页面逻辑代码,在服务器上进行部署之前编译该外部类,并且运行时在.aspx文件“背后”链接该类。