本章学习目标
. 了解内置对象的基本原理
. 熟练掌握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
(3)为事件添加C#代码如下。
protected void Page_Load(object sender, EventArgs e)
{
if (! IsPostBack)
{
lblInfo.Text+="页面第一次加载";
}
else
{
lblInfo.Text+="页面第二次或第二次以上加载";
}
lblInfo.Text+="触发了Page 对象的Load 事件
";
}p
rotected void Page_Init(object sender, EventArgs e)
{
lblInfo.Text+="触发了Page 对象的Init 事件
";
}p
rotected void Page_PreInit(object sender, EventArgs e)
{
lblInfo.Text+="触发了Page 对象的PreInit 事件
";
}p
rotected void Page_InitComplete(object sender, EventArgs e)
{
lblInfo.Text+="触发了Page 对象的InitComplete 事件
";
}p
rotected void Page_PreLoad(object sender, EventArgs e)
{
lblInfo.Text+="触发了Page 对象的PreLoad 事件
";
}p
rotected void Page_LoadComplete(object sender, EventArgs e)
{
lblInfo.Text+="触发了Page 对象的LoadComplete 事件
";
}p
rotected void Page_PreRender(object sender, EventArgs e)
{
lblInfo.Text+="触发了Page 对象的PreRender 事件
";
}p
rotected void Page_Unload(object sender, EventArgs e)
{
lblInfo.Text+="触发了Page 对象的Unload 事件
";
}p
rotected void btnSubmit_Click(object sender, EventArgs e)
{
105
lblInfo.Text+="触发了按钮的Click 事件
";
}
(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
(3)为事件添加C#代码如下。
protected void btnWriteTxt_Click(object sender, EventArgs e)
{
Response.Write("普通文字输出");
}p
rotected void btnWriteHTML_Click(object sender, EventArgs e)
{
Response.Write("包含html 标签的文本");
}p
rotected void btnWriteJS_Click(object sender, EventArgs e)
{
Response.Write("");
}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)设置相关控件的属性,如下列源代码所示。
(3)为事件添加C#代码如下。
protected void btnGetInfo_Click(object sender, EventArgs e)
{
lblInfo.Text="
客户端浏览器名称:"+Request.Browser.Type
+"
版本号:"+Request.Browser.Version
+"
客户端使用的操作系统:"+Request.Browser.Platform
+"
客户端IP 地址:"+Request.UserHostAddress
+"
当前请求的URL:"+Request.Url
+"
当前请求的虚拟路径:"+Request.Path
+"
当前请求的物理路径:"+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 页:
example5-4-2.aspx 页:
(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 传输
扫一扫