ASP.NET共有七个内置对象,以下分别介绍:
1.Page对象
Page类以动态方式创建HTML标记并传送回浏览器,同时处理请求和响应,并且会创建服务器控件。
Web Form网页被编译成了Page对象,因此可以使用Page对象的属性,方法和事件。
下面举例说明 Page_Init,Page_Load和Page_Unload事件。
Page_Init事件的例子:
Web Form网页的执行从网页初始化开始,此时触发Page对象的Init事件。Init的用途是设置网页或者控件的初始值。同一个网页只会触发一次Init事件,当客户返回Web Form数据时,不会再次触发Init事件。
<html>
<head>
<script language="C#" runat="server">
//Page_Init事件处理过程
void Page_Init(Object sender,EventArgs e)
{
将条种颜色添加到select选择框中
SizeSelect.Items.Add("black");
SizeSelect.Items.Add("red");
SizeSelect.Items.Add("blue");
SizeSelect.Items.Add("green");
}
void Apply_Click(Object sender,EventArgs e)
{
//设置span中的文本字体颜色为列表框中的值
Span1.Style["color"]=SizeSelect.Value;
}
void AddToList_Click(object Source,EventArgs e)
{
//将输入框中Text1的值添加到列表框中
SizeSelect.Items.Add(Text1.Value);
}
</script>
</head>
<body>
<form runat="server">
请选择颜色:</br>
<%--这里声明了一个HtmlSelect,提供给用户选择字体颜色--%>
<select id="SizeSelect" runat="server"></select>
<input type="button" runat="server" Value="应用" OnServerClick="Apply_Click">
<p>向列表中添加新字体颜色<br>
<input type="text" id="Text1" runat="server">
<input type="button" runat="server" Value="添加" OnServerClick="AddToList_Click">
<input type="button" id="Text2" runat="server" OnOk="Ok_Clock" /></select>
</p><span id="Span1" runat="server">单击这里改变字体的颜色</span>
</form>
</body>
</html>
当用户单击网页上的添加按钮时,会将数据返回到服务器,此时网页被重新加载,但并不会再次触发PAGE对象的Init事件。
Page_load事件的例子
网页完成初始化后便会加载,从而触发Page对象的Load事件,此事件也可以用来设置网页控件的初始值,如同Init事件一样。但是与Init不同的是,当窗体数据返回到服务器时,Page对象的Load事件会被再度触发。
<html>
<head>
<script language="C#" runat="server">
void Page_Load(Object sender,EventArgs e) //为Page_Load事件,唯一与上面例子不同之处
{
SizeSelect.Items.Add("black");
SizeSelect.Items.Add("red");
SizeSelect.Items.Add("blue");
SizeSelect.Items.Add("green");
}
void Apply_Click(Object sender,EventArgs e)
{
Span1.Style["color"]=SizeSelect.Value;
}
void AddToList_Click(object Source,EventArgs e)
{
SizeSelect.Items.Add(Text1.Value);
}
void Ok_Clock(object Source,EventArgs e)
{
SizeSelect.Items.Add(Text1.Value);
}
</script>
</head>
<body>
<form runat="server">
请选择颜色:</br>
<%--这里声明了一个HtmlSelect,提供给用户选择字体颜色--%>
<select id="SizeSelect" runat="server"></select>
<input type="button" runat="server" Value="应用" OnServerClick="Apply_Click">
<p>向列表中添加新字体颜色<br>
<input type="text" id="Text1" runat="server">
<input type="button" runat="server" Value="添加" OnServerClick="AddToList_Click">
<input type="button" id="Text2" runat="server" OnOk="Ok_Clock" /></select>
</p><span id="Span1" runat="server">单击这里改变字体的颜色</span>
</form>
</body>
</html>
第一次访问此网页,下拉列表框中出现4个选项,分别是"black","red","blue"和"green",结果跟上面的例子一样。
在文本框中输入"Purple",单击"添加"按钮时,下拉列表框出现了Purple,但重复出现了"black","red","blue"和"green"。这是因为Page对象的Load事件被再次触发而重新将这4项添加了一遍。
可以用Page对象的IsPostBack属性,即在Page_Load中加入一行if(!Page.IsPostBack)来判断网页是何种情况下加载。
Page对象的Page_Unload事件
在网页完成处理并且用户信息被写入客户端之后,Page对象的Unload事件会被触发,Unload事件通常用来关闭文件,取消数据庫的连接或者释放对象。
2.Response对象
Respone对象派生自HttpResponse类,用来决定何时或如何将输出由服务器发送到客户端。
Response.Write方法是Response对象最简单也是最常用的方法,用来向游览器输出信息。
Response.Write("这是最简单的用法");
注:如果要输出的信息中包含双引号,必须将它改写为两个双引号或一个单引号,如
Response.Write("<A Href='http://www.tom.com'>Tom 网</A>");
Response.Write("<A Href=""http://www.tom.com"">Tom网</A>");
Response对象提供了3个方法来处理缓冲区的数据。
1)Response.clearConent;清除
清除存放在缓冲区尚未发送到客户端的输出。
void Page_Load(Object sender,EventArgs e)
{
Response.BufferOutput=true;
Response.Write("Hello ");
Response.ClearContent();
Response.Write("World");
}
屏幕将显示World字样
2)Response.Flush:
把存放在缓冲区中输出发送到客户端,同时清除缓冲区
void Page_Load(Object sender,EventArgs e)
{
//启用缓冲处理
Response.BufferOutput=true;
Response.Write("Hello ");
//把存入在缓冲区的输出发送到客户端并清除缓冲区
Response.Flush();
Response.Write("World");
//清除存放在缓冲区尚末发送到客户端的输出
Response.ClearContent();
}
结果输出Hello字样
原因是通过Respnose.Write("World")语句放到缓冲区的"World"语句被紧跟其后的ResponseClearContent语句清除,因此没有显示在屏幕上。
3)Respnose.ClearHeaders:
清除所有存放在缓冲区的HTTP标头。
还可以利用Response对象的Redirect方法实现地址重向,使浏览器在显示主页之后自动定向到另外的网页。
pn="http://www.google.cn/";
Response.Redirect(pn);
3.Request对象
Request对象用来捕获由客户端返回服务器端的数据,比如用户输入的表单数据,保存在客户机上的Cookie等。
如果在HtmlForm控件中将Method属性设置为"Get",表单将以字符串的形式附加在网址的后面返回服务器端。
此时,用Request对象的QueryString属性来获取表单数据。
如果Method属性设置"Post",必须用Request对象的Form属性来捕获表单数据。
下面是一个用Request对象来获取表单数据的例子:
7.Cookie对象
Cookie对象可以让用户再次访问某站点时,应用程序检索以前保存的信息。
它可以记录游览者的个人信息,游览器类型等。
它分别隶属于Request对象和Response对象,每一个Cookie变量都被不同的Cookie对象所管理。
下面的示例是定义一个Cookie对象并获取其中的数据:
<form id="form1" runat="server" Method="Post">
<div>
<asp:Label runat="server" ID="name" Visible="false" ForeColor="Blue"/> </div>
<asp:Button ID="Button1" runat="server" Text="获取Cookie"
onclick="Button1_Click" />
</form>
protected void Page_Load(object sender, EventArgs e)
{
if (Request.Cookies["user"] == null)
{
HttpCookie cookie = new HttpCookie("user"); //建立一个名为"user"的Cookie对象
cookie.Values.Add("name", "steven"); //为Cookie对象加入名为"name"的数据
Response.AppendCookie(cookie);
}
}
protected void Button1_Click(object sender, EventArgs e)
{
HttpCookie cookie = Request.Cookies["user"];
if (cookie != null) //获取Cookie中的值
{
string cookiename = cookie.Values["name"];
cookiename = "Cookie上的name为" + cookiename;
name.Text = cookiename;
name.Visible = true;
Button1.Visible = false;
}
}
1.Page对象
Page类以动态方式创建HTML标记并传送回浏览器,同时处理请求和响应,并且会创建服务器控件。
Web Form网页被编译成了Page对象,因此可以使用Page对象的属性,方法和事件。
下面举例说明 Page_Init,Page_Load和Page_Unload事件。
Page_Init事件的例子:
Web Form网页的执行从网页初始化开始,此时触发Page对象的Init事件。Init的用途是设置网页或者控件的初始值。同一个网页只会触发一次Init事件,当客户返回Web Form数据时,不会再次触发Init事件。
<html>
<head>
<script language="C#" runat="server">//Page_Init事件处理过程
void Page_Init(Object sender,EventArgs e)
{将条种颜色添加到select选择框中
SizeSelect.Items.Add("black");
SizeSelect.Items.Add("red");
SizeSelect.Items.Add("blue");
SizeSelect.Items.Add("green");
}
void Apply_Click(Object sender,EventArgs e)
{//设置span中的文本字体颜色为列表框中的值
Span1.Style["color"]=SizeSelect.Value;
}
void AddToList_Click(object Source,EventArgs e)
{//将输入框中Text1的值添加到列表框中
SizeSelect.Items.Add(Text1.Value);
}
</script>
</head>
<body>
<form runat="server">
请选择颜色:</br>
<%--这里声明了一个HtmlSelect,提供给用户选择字体颜色--%>
<select id="SizeSelect" runat="server"></select>
<input type="button" runat="server" Value="应用" OnServerClick="Apply_Click">
<p>向列表中添加新字体颜色<br>
<input type="text" id="Text1" runat="server">
<input type="button" runat="server" Value="添加" OnServerClick="AddToList_Click">
<input type="button" id="Text2" runat="server" OnOk="Ok_Clock" /></select>
</p><span id="Span1" runat="server">单击这里改变字体的颜色</span>
</form>
</body>
</html>当用户单击网页上的添加按钮时,会将数据返回到服务器,此时网页被重新加载,但并不会再次触发PAGE对象的Init事件。
Page_load事件的例子
网页完成初始化后便会加载,从而触发Page对象的Load事件,此事件也可以用来设置网页控件的初始值,如同Init事件一样。但是与Init不同的是,当窗体数据返回到服务器时,Page对象的Load事件会被再度触发。
<html>
<head>
<script language="C#" runat="server">
void Page_Load(Object sender,EventArgs e) //为Page_Load事件,唯一与上面例子不同之处
{
SizeSelect.Items.Add("black");
SizeSelect.Items.Add("red");
SizeSelect.Items.Add("blue");
SizeSelect.Items.Add("green");
}
void Apply_Click(Object sender,EventArgs e)
{
Span1.Style["color"]=SizeSelect.Value;
}
void AddToList_Click(object Source,EventArgs e)
{
SizeSelect.Items.Add(Text1.Value);
}
void Ok_Clock(object Source,EventArgs e)
{
SizeSelect.Items.Add(Text1.Value);
}
</script>
</head>
<body>
<form runat="server">
请选择颜色:</br>
<%--这里声明了一个HtmlSelect,提供给用户选择字体颜色--%>
<select id="SizeSelect" runat="server"></select>
<input type="button" runat="server" Value="应用" OnServerClick="Apply_Click">
<p>向列表中添加新字体颜色<br>
<input type="text" id="Text1" runat="server">
<input type="button" runat="server" Value="添加" OnServerClick="AddToList_Click">
<input type="button" id="Text2" runat="server" OnOk="Ok_Clock" /></select>
</p><span id="Span1" runat="server">单击这里改变字体的颜色</span>
</form>
</body>
</html>第一次访问此网页,下拉列表框中出现4个选项,分别是"black","red","blue"和"green",结果跟上面的例子一样。
在文本框中输入"Purple",单击"添加"按钮时,下拉列表框出现了Purple,但重复出现了"black","red","blue"和"green"。这是因为Page对象的Load事件被再次触发而重新将这4项添加了一遍。
可以用Page对象的IsPostBack属性,即在Page_Load中加入一行if(!Page.IsPostBack)来判断网页是何种情况下加载。
在网页完成处理并且用户信息被写入客户端之后,Page对象的Unload事件会被触发,Unload事件通常用来关闭文件,取消数据庫的连接或者释放对象。
2.Response对象
Respone对象派生自HttpResponse类,用来决定何时或如何将输出由服务器发送到客户端。
Response.Write方法是Response对象最简单也是最常用的方法,用来向游览器输出信息。
Response.Write("这是最简单的用法");
注:如果要输出的信息中包含双引号,必须将它改写为两个双引号或一个单引号,如
Response.Write("<A Href='http://www.tom.com'>Tom 网</A>");
Response.Write("<A Href=""http://www.tom.com"">Tom网</A>");
Response对象提供了3个方法来处理缓冲区的数据。
1)Response.clearConent;清除
清除存放在缓冲区尚未发送到客户端的输出。
void Page_Load(Object sender,EventArgs e)
{
Response.BufferOutput=true;
Response.Write("Hello ");
Response.ClearContent();
Response.Write("World");
}屏幕将显示World字样
2)Response.Flush:
把存放在缓冲区中输出发送到客户端,同时清除缓冲区
void Page_Load(Object sender,EventArgs e)
{//启用缓冲处理
Response.BufferOutput=true;
Response.Write("Hello ");//把存入在缓冲区的输出发送到客户端并清除缓冲区
Response.Flush();
Response.Write("World"); //清除存放在缓冲区尚末发送到客户端的输出
Response.ClearContent();
}结果输出Hello字样
原因是通过Respnose.Write("World")语句放到缓冲区的"World"语句被紧跟其后的ResponseClearContent语句清除,因此没有显示在屏幕上。
3)Respnose.ClearHeaders:
清除所有存放在缓冲区的HTTP标头。
还可以利用Response对象的Redirect方法实现地址重向,使浏览器在显示主页之后自动定向到另外的网页。
pn="http://www.google.cn/";
Response.Redirect(pn);3.Request对象
Request对象用来捕获由客户端返回服务器端的数据,比如用户输入的表单数据,保存在客户机上的Cookie等。
如果在HtmlForm控件中将Method属性设置为"Get",表单将以字符串的形式附加在网址的后面返回服务器端。
此时,用Request对象的QueryString属性来获取表单数据。
如果Method属性设置"Post",必须用Request对象的Form属性来捕获表单数据。
下面是一个用Request对象来获取表单数据的例子:
protected void Apply_click(object sender, EventArgs e)
{
InputPanel.Visible = false; //InputPanel重设为不可视
ResultPanel.Visible = true;//ResultPanel重设为可视
showname.Text = Request.Params["name"];
showmail.Text = Request.Params["email"];
}
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>无标题页</title>
</head>
<body>
<form id="form1" runat="server" method="post">
<div>
<asp:Panel ID="InputPanel" runat="server" Visible="true">
<fieldset>
<legend>个人资料</legend>
姓名:<asp:TextBox runat="server" ID="name" /><br />
E-Mail:<asp:TextBox runat="server" ID="email" />
</fieldset>
<asp:Button runat="server" Text="确定" OnClick="Apply_click" />
</asp:panel>
<asp:Panel ID="ResultPanel" runat="server" Visible="false">
<asp:Label runat="server" ID="showname" ForeColor="Blue" />您好:<br />
您的E-Mail为:<asp:Label runat="server" ID="showmail" ForeColor="Blue" />
</asp:Panel>
</div>
</form>
</body>
</html>
4.Server对象
Server对象派生自HttpServerUtility类,提供服务器端最基本的属性与方法。
常用的属性性和方法包括:
MachineName返回服务端机器名
ScripTimeout返回请求超时的时间
MapPath将虚拟路径转换为实际路径。
5.Application对象
由于服务器在处理完游览器的请求之后就会中断连接,所以服务器没有记录游览器的任何信息。
Application对象可以生成一个全部Web应用程序都能存取的变量,用来记录整个网站的信息,包括上线人数,在线名单等。
下面是一个如何存取Application对象变量值的例子:
protected void Page_Load(object sender, EventArgs e)
{
//产生Application变量并指定初始值,
//所有的Application变量都放在Application集合中由Application对象管理
Application.Add("法国", "巴黎");
Application.Add("英国", "伦敦");
Application.Add("西班牙", "马德里");
//获取集合内记录的变量数目,用for循环分别取出各Application变量
for (int i = 0; i < Application.Count; i++)
{
//通过索引取出Application变量
Response.Write(("申奥国家:" + Application.GetKey(i) + " "));
Response.Write("申办城市:" + Application[i] + " " + " ");
}
Application.Clear();//清除所有的Application变量
}
6. Session对象 Session对象用来存储跨网页程序的变量或对象,只针对单一用户。即各个连接的客户都有各自的Session对象变更。
下面是一个设置超时值的例子:
protected void Page_Load(object sender, EventArgs e)
{
Session.Timeout = 1;
if (Session["Counter"] != null)
{
int i = (int)Session["Counter"];
i++;
Session["Counter"] = (object)i;
}
else
{
Session["Counter"] = 1;
} string n;
n = Convert.ToString(Session["Counter"]);
counter.Text = "这是您第" + n + "次访问本网站";
}
在一分钟内不断刷新,Counter值会不断累加。一分钟(到达超时值)后变为1。7.Cookie对象
Cookie对象可以让用户再次访问某站点时,应用程序检索以前保存的信息。
它可以记录游览者的个人信息,游览器类型等。
它分别隶属于Request对象和Response对象,每一个Cookie变量都被不同的Cookie对象所管理。
下面的示例是定义一个Cookie对象并获取其中的数据:
<form id="form1" runat="server" Method="Post">
<div>
<asp:Label runat="server" ID="name" Visible="false" ForeColor="Blue"/> </div>
<asp:Button ID="Button1" runat="server" Text="获取Cookie"
onclick="Button1_Click" />
</form>
protected void Page_Load(object sender, EventArgs e)
{
if (Request.Cookies["user"] == null)
{
HttpCookie cookie = new HttpCookie("user"); //建立一个名为"user"的Cookie对象
cookie.Values.Add("name", "steven"); //为Cookie对象加入名为"name"的数据
Response.AppendCookie(cookie);
}
}
protected void Button1_Click(object sender, EventArgs e)
{
HttpCookie cookie = Request.Cookies["user"];
if (cookie != null) //获取Cookie中的值
{
string cookiename = cookie.Values["name"];
cookiename = "Cookie上的name为" + cookiename;
name.Text = cookiename;
name.Visible = true;
Button1.Visible = false;
}
}
本文详细介绍了ASP.NET中的七个内置对象:Page、Response、Request、Server、Application、Session及Cookie对象的功能与用法,包括Page对象的事件处理、Response对象的输出控制、Request对象的数据捕获等功能。
608

被折叠的 条评论
为什么被折叠?



