ASP.NET网络系统开发1(七大对象)

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对象来获取表单数据的例子:


  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"
οnclick="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;
}
}
 




  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值