本章学习目标
. 了解内置对象的基本原理
. 熟练掌握Page对象的使用方法
. 熟练掌握Response对象的使用方法
. 熟练掌握Request对象的使用方法
. 熟练掌握Server对象的使用方法
. 熟练掌握Application对象的使用方法
. 熟练掌握Session对象的使用方法
. 了解Cookie对象的使用方法
. 熟练掌握全局应用程序类中的事件
本章首先介绍内置对象的作用,然后对ASP.NET 提供的Page、Request、Response、
Application、Session、Server、Cookie等内置对象进行详细讲解,最后添加全局应用程序类, 
并对其中的事件进行应用测试。
5.1 Page对象
5.1.1 Page 对象的属性和方法
Page对象是System.Web.UI命名空间Page类的一个实例,是网页中所有服务器控件
的容器,在ASP.NET中每个页面都派生自Page类,并继承该类所有公开的方法和属性。
Page对象的主要属性如表5.1所示,主要事件如表5.2所示。
扫一扫

103 
表5.1 Page对象的主要属性
属 性 名说 明
IsPostBack 获取一个值,指示页面是首次加载还是回发加载
IsValid 获取一个值,指示页面验证是否成功 
说明: 
1.IsPostBack属性可以检查.aspx页是否为“回发”,常用于判断页面是否为首次加载, 
若为首次加载,则该值为False。
2.IsValid属性可以判断页面中输入的所有内容是否通过验证,使用服务器端验证时常
使用该属性。
表5.2 Page对象的主要事件
事 件 名说 明
PreInit 当页面初始化时触发
PreLoad 在页面Load事件之前触发
Load 当服务器加载到Page对象时触发
Init 当服务器控件初始化时触发
PreRender 在加载控件之后、呈现控件之前触发
Unload 当服务器控件从内存中卸载时触发
InitComplete 当页初始化完成时触发
LoadComplete 当页加载结束时触发
5.1.2 Page 对象的应用
网页C#代码中默认提供了Page.Load事件所对应的Page_Load()方法,而其他的事
件则需要编写其对应的方法,不需要如控件一样在源中声明。各事件触发执行的先后顺序
为:Page.PreInit、Page.Init、Page.InitComplete、Page.PreLoad、Page.Load、Page. 
LoadComplete、Page.PreRender和Page.Unload。
【示例5-1】 在E盘ASP.NET项目代码目录中创建chapter5子目录,将其作为网站
根目录,创建名为example5-1的网页,演示加载页面时Page对象的各种事件的触发执行
顺序。
(1)在页面中添加相应控件,具体如图5.1所示。
图5.1 Page对象应用页面设计
(2)设置相关控件的属性,如下列源代码所示。

104 
<form id="form1" runat="server"> 
<span>Page 对象事件的触发顺序</span><hr> 
<asp:Label ID="lblInfo" runat="server"></asp:Label> 
<br/> 
<asp:Button ID="btnSubmit" runat="server" OnClick="btnSubmit_Click" Text="提
交"/> 
</form> 
(3)为事件添加C#代码如下。 
protected void Page_Load(object sender, EventArgs e) 
{ 
if (! IsPostBack) 
{ 
lblInfo.Text+="页面第一次加载"; 
} 
else 
{ 
lblInfo.Text+="页面第二次或第二次以上加载"; 
} 
lblInfo.Text+="触发了Page 对象的Load 事件<br>"; 
}p
rotected void Page_Init(object sender, EventArgs e) 
{ 
lblInfo.Text+="触发了Page 对象的Init 事件<br>"; 
}p
rotected void Page_PreInit(object sender, EventArgs e) 
{ 
lblInfo.Text+="触发了Page 对象的PreInit 事件<br>"; 
}p
rotected void Page_InitComplete(object sender, EventArgs e) 
{ 
lblInfo.Text+="触发了Page 对象的InitComplete 事件<br>"; 
}p
rotected void Page_PreLoad(object sender, EventArgs e) 
{ 
lblInfo.Text+="触发了Page 对象的PreLoad 事件<br>"; 
}p
rotected void Page_LoadComplete(object sender, EventArgs e) 
{ 
lblInfo.Text+="触发了Page 对象的LoadComplete 事件<br>"; 
}p
rotected void Page_PreRender(object sender, EventArgs e) 
{ 
lblInfo.Text+="触发了Page 对象的PreRender 事件<br>"; 
}p
rotected void Page_Unload(object sender, EventArgs e) 
{ 
lblInfo.Text+="触发了Page 对象的Unload 事件<br>"; 
}p
rotected void btnSubmit_Click(object sender, EventArgs e) 
{

105 
lblInfo.Text+="触发了按钮的Click 事件<br>"; 
}
(4)运行页面,页面显示相关事件执行顺序,如图5.2所示。单击“提交”按钮,页面显
示“回发”时相关事件执行的顺序,如图5.3所示。
图5.2 页面初次加载Page对象事件演示
图5.3 页面“回发”时Page对象事件演示

106 
5.2 Response对象
5.2.1 Response 对象的属性和方法
Response对象是HttpResponse类的一个实例,封装来自ASP.NET 操作的HTTP响
应信息,提供对当前页的输出流访问,控制服务器发送给浏览器的信息,包括直接发送信息
给浏览器、重新定向浏览器到另一个URL,以及设置Cookie值等。Response对象的主要属
性如表5.3所示,主要方法如表5.4所示。
表5.3 Response对象的主要属性
属 性 名说 明
Buffer 获取或设置一个值,该值指示是否缓冲输出,并在完成处理整个响应之后将其发送
BufferOutput 获取或设置一个值,该值指示是否缓冲输出,并在完成处理整个页之后将其发送
Cache 获取Web页的缓存策略,如过期时间、保密性、变化子句等
Charset 获取或设置输出流的HTTP字符集
Cookie 获取响应的Cookie集合
Expires 获取或设置在浏览器上缓存的页过期前的分钟数
表5.4 Response对象的主要方法
方 法 名说 明
AppendCookie() 向响应对象的Cookie集合中增加一个Cookie对象
Clear() 清空缓冲区中的所有内容输出
Close() 关闭当前服务器到客户端的连接
End() 终止响应,并且将缓冲区中的输出发送到客户端
Redirect() 重定向当前请求
Write() 将信息写入HTTP的响应输出流
WriteFile() 将指定的文件直接写入HTTP的响应输出流
图5.4 Response对象应用
页面设计
5.2.2 Response 对象的应用
【示例5-2】 在E 盘ASP.NET 项目代码的chapter5目录
下,添加一个文本文件,命名为“1.txt”,编写文本内容为“Thisis 
atext”,创建名为example5-2的网页,练习使用Response对象
的各种属性和方法。
(1)在页面中添加相应控件,具体如图5.4所示。
(2)设置相关控件的属性,如下列源代码所示。
扫一扫

107 
<form id="form1" runat="server"> 
<div> 
Response 对象的应用<br/> 
<asp:Button ID="btnWriteTxt" runat="server" Text="Write 方法输出简单文
本" OnClick="btnWriteTxt_Click"/> 
<br/> 
<asp:Button ID="btnWriteHTML" runat="server" Text="Write 方法输出HTML 
标签" OnClick="btnWriteHTML_Click"/> 
<br/> 
< asp:Button ID="btnWriteJS" runat="server" Text="Write 方法输出JS 脚
本" OnClick="btnWriteJS_Click"/> 
<br/> 
< asp: Button ID="btnWriteFile" runat="server" Text="WriteFile 方法" 
OnClick="btnWriteFile_Click"/> 
<br/> 
< asp: Button ID =" btnRedirect" runat =" server" Text =" Redirect 方法" 
OnClick="btnRedirect_Click"/> 
</div> 
</form> 
(3)为事件添加C#代码如下。 
protected void btnWriteTxt_Click(object sender, EventArgs e) 
{ 
Response.Write("普通文字输出"); 
}p
rotected void btnWriteHTML_Click(object sender, EventArgs e) 
{ 
Response.Write("<a href=123>包含html 标签的文本</a>"); 
}p
rotected void btnWriteJS_Click(object sender, EventArgs e) 
{ 
Response.Write("<script>alert('包含脚本文本');</script>"); 
}p
rotected void btnWriteFile_Click(object sender, EventArgs e) 
{ 
Response.WriteFile(@"E:\ASP.NET 项目代码\chapter51.txt"); 
}p
rotected void btnRedirect_Click(object sender, EventArgs e) 
{ 
Response.Redirect("example5-1.aspx"); 
}
(4)运行页面,单击按钮,可获取Response对象各方法和属性的基本功能,单击
“WriteFile方法”按钮,运行时效果如图5.5所示。
图5.5 Response对象应用页面演示

108 
5.3 Request对象
5.3.1 Request 对象的属性和方法
Request对象是System.Web.HttpRequest类的实例,当客户请求ASP.NET 页面时, 
所有的请求信息,包括请求报头、请求方法、客户端基本信息等被封装在Request对象中,利
用Request对象可以读取这些请求信息。Request对象的主要属性如表5.5所示,主要方法
如表5.6所示。
表5.5 Request对象的主要属性
属 性 名说 明
Browser 获取正在请求的客户端浏览器功能的信息
Cookies 获取客户端发送的Cookie的集合
Form 获取表单变量的集合
FilePath 获取当前请求的虚拟路径
Param 获取地址栏中的参数集合
QueryString 获取HTTP查询字符串变量集合
UserHostAddress 获取远程客户端的IP主机地址
Url 获取有关当前请求的URL信息
UserHostName 获取远程客户端的DNS名称
表5.6 Request对象的主要方法
方 法 名说 明
BinaryRead() 执行对当前输入流进行指定字节数的二进制读取
MapPath() 将请求的URL中的虚拟路径映射到服务器上的物理路径
SaveAs() 将HTTP请求保存到文件中
5.3.2 Request 对象的应用
【示例5-3】 在E盘ASP.NET项目代码的chapter5目录下,创建名为example5-3的
网页,练习使用Request对象的各种属性。
(1)在页面中添加相应控件,具体如图5.6所示。
图5.6 Request对象应用页面设计
扫一扫

109 
(2)设置相关控件的属性,如下列源代码所示。 
<form id="form1" runat="server"> 
Request 对象的属性与方法<br/> 
<br/> 
< asp: Button ID="btnGetInfo" runat="server" OnClick="btnGetInfo_Click" 
Text="获取客户端信息"/> 
<br/> 
<asp:Label ID="lblInfo" runat="server"></asp:Label> 
</form> 
(3)为事件添加C#代码如下。 
protected void btnGetInfo_Click(object sender, EventArgs e) 
{ 
lblInfo.Text="<br>客户端浏览器名称:"+Request.Browser.Type 
+"<br>版本号:"+Request.Browser.Version 
+"<br>客户端使用的操作系统:"+Request.Browser.Platform 
+"<br>客户端IP 地址:"+Request.UserHostAddress 
+"<br>当前请求的URL:"+Request.Url 
+"<br>当前请求的虚拟路径:"+Request.Path 
+"<br>当前请求的物理路径:"+Request.PhysicalPath; 
}
(4)运行页面,单击相关按钮,运行结果如图5.7所示。
图5.7 Request对象应用页面演示
【示例5-4】 在E盘ASP.NET项目代码的chapter5目录下,创建example5-4页面和
example5-4-2页面,练习使用Request对象和Response对象进行地址栏传值。
(1)在example5-4网页和example5-4-2页面中添加相应控件,具体如图5.8和图5.9 
所示。
example5-4页面:

110 
图5.8 Request对象应用的网页设计1 
example5-4-2页面: 
图5.9 Request对象应用的网页设计2 
(2)设置相关控件的属性,如下列源代码所示。 
example5-4.aspx 页: 
<form id="form1" runat="server"> 
用户ID:<asp:TextBox ID="txtID" runat="server"></asp:TextBox> 
<br/> 
昵称:<asp:TextBox ID="txtName" runat="server"></asp:TextBox> 
<br/> 
< asp: Button ID ="btnRedirect" runat ="server" onclick =" btnRedirect _ 
Click " Text="页码跳转并地址栏传值"/> 
</form> 
example5-4-2.aspx 页: 
<form id="form1" runat="server"> 
欢迎登录<br/> 
ID:<asp:Label ID="lblID" runat="server"></asp:Label> 
<br/> 
Name:<asp:Label ID="lblName" runat="server"></asp:Label> 
</form> 
(3)为事件添加C#代码如下。 
example5-4.cs: 
protected void btnRedirect_Click(object sender, EventArgs e) 
{ 
Response.Redirect("example5- 4- 2.aspx? id="+ txtID.Text+"&name="+ txtName. 
Text); 
}e
xample5-4-2.cs: 
protected void Page_Load(object sender, EventArgs e) 
{ 
if (Request.Params["id"] ! =null && Request["name"] ! =null) 
{ 
lblID.Text=Request.Params["id"].ToString(); 
lblName.Text=Request.Params["name"].ToString(); 
} 
else 
{ 
Response.Redirect("example5-4.aspx"); 
} 
}

111 
(4)运行页面,在example5-4页面输入用户ID、昵称,单击“页面跳转并地址栏传值”按
钮提交服务器,如图5.10所示。在example5-4-2页面获取地址栏中的参数值,显示在页面
中,如图5.11所示。
图5.10 Request对象应用页面演示2 
图5.11 Request对象应用页面演示3 
5.4 Server对象
5.4.1 Server 对象的属性和方法
Server对象是HttpServerUtility类的一个实例,提供对服务器属性和方法的访问功
能,可以处理页面请求时所需的功能,如建立COM 对象、字符串的编译码等工作。Server 
对象的主要属性如表5.7所示,主要方法如表5.8所示。
表5.7 Server对象的主要属性
属 性 名说 明
MachineName 获取服务器的名称
ScriptTimeOut 获取或设置请求的超时值(单位为秒) 
表5.8 Server对象的主要方法
方 法 名说 明
Execute() 执行指定的资源,并且在执行完之后再执行本页的代码
HtmlDecode() 对HTML编码的字符串进行解码
HtmlEncode() 对要在浏览器中显示的字符串进行HTML编码
MapPath() 获取指定相对路径在服务器上的物理路径
Transfer() 停止执行当前程序,执行指定的资源
UrlDecode() 对已被编码的URL字符串进行解码
UrlEncode() 对URL的字符串进行编码,通过URL 从Web服务器到客户端进行HTTP 传输
扫一扫