一  ASP.NET中有一常用的内置对象,当Web应用程序运行时,这些对象提供了丰富的功能,如维护Web服务器的活动状态,网页输入输出等。

常用的内置对象:

 1.1 Page对象

在ASP.NET中,每个页面都派生自Page类,并继承这个类公开的所有方法和属性。


Page 类与扩展名为 .aspx 的文件相关联,这些文件在运行时被编译为 Page 对象,并被缓存在服务器内存中。


由于网页编译后所创建的类由Page派生而来,因此网页可以直接使用Page对象的属性、方法和事件。

1.2页面类的构造:

 

1.3 网页的生命周期:

当请求Web服务器上的一个ASP.NET网页时,这个网页就会被加载到Web服务器的内存中,经过处理后发送给用户,既从内存中卸载。这个过程称为网页的生命周期,它的目标就是为发送网页请求的浏览器呈现适当的HTML网页。

网页生命周期有两种稍微不同的顺序:一种是首次加载网页,另一种是在回传过程中再次加载网页。


在生命周期的每个阶段,都提供了可以使用的方法和事件,供程序开发人员来重写ASP.NET引擎的默认处理行为,或增加自己的处理逻辑。

1.4 ASP.NET 如何处理事件:

①当页面首次运行时,ASP.NET创建一个Page对象和一些控件对象,执行初始化代码,然后页面被渲染为HTML格式返回到客户端。


②当用户触发了页面回发(PostBack)时,通常是触发了某个事件,比如单击按钮事件,这时候页面将再次提交所有的表单数据到服务器端。

③ASP.NET获取返回的页面,并重新创建Page对象。


④ASP.NET检查是什么事件触发了PosBack,并响应相应的事件,这时候将执行开发人员编写的触发事件代码。

⑤页面将被渲染并返回到客户端,Page对象从内存中释放。

当@Page指令的AutoEventWireup属性被设置为true后,页面事件将自动绑定至使用“Page_事件”命名约定的方法,比如“Page_Init”、“Page_Load”。

1.5ASP.NET的网页生命周期:

 

 

 

1.6 Page对象的属性、方法和事件

http://www.w3school.com.cn/aspnet/prop_control_standard_page.asp

http://www.w3school.com.cn/aspnet/webpages_objects.asp

1.7 Page对象的使用:

例:使用IsPostBack属性

W1_7.aspx:

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="W4_1_3.aspx.cs" Inherits="csweb1_W4_1_3" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
     <div>
       <p><asp:Label ID="Label1" runat="server" Text="姓名"></asp:Label>
        <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox></p>
       <p> <asp:Button ID="Button1" runat="server" Text="提交" CssClass="m1" /></p>
       <p> 
           <asp:Label ID="Label2" runat="server" Text="Label"></asp:Label> </p>
    </div>
    
    </div>
    </form>
</body>
</html>

W1_7.aspx.cs:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

public partial class csweb1_W4_1_3 : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack) 
              Label2.Text = TextBox1.Text + ":你已经提交";
            else
                Label2.Text = "没有提交";
        
    }
}

2. Request对象:

Request对象的主要功能是从客户端获取数据。使用该对象可以访问任何HTTP请求传递的信息,包括使用POST方法或者GET方法传递的参数、cookie和用户验证。

2.2Request对象的属性与方法:

http://www.cnblogs.com/amber-liu/p/10000141.html

2.3 应用Request对象:

例:获取客户端信息

W2_3.aspx:

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="w4_2_2.aspx.cs" Inherits="csweb1_w4_2_2" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
    <div class="minchine">
       <p>
           <asp:Label ID="Label3" runat="server" Text="机器名称:"></asp:Label>
           <asp:TextBox ID="TextBox2" runat="server"></asp:TextBox>
        </p>
         <p>
           <asp:Label ID="Label4" runat="server" Text="IP地址:"></asp:Label>
           <asp:TextBox ID="TextBox3" runat="server"></asp:TextBox>
        </p>
         <p>
           <asp:Label ID="Label5" runat="server" Text="浏览器使用的语言:"></asp:Label>
           <asp:TextBox ID="TextBox4" runat="server"></asp:TextBox>
         </p>
       
    
    </div>
    </div>
    </form>
</body>
</html>

 

W2_3.aspx.cs:
 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

public partial class csweb1_w4_2_2 : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        TextBox2.Text = Request.UserHostName;
        TextBox3.Text = Request.UserHostAddress;
        TextBox4.Text = Request.UserLanguages[0];

    }
}

 

例:通过Request对象获取传递的参数


在上网过程中,经常会发现网址后面跟一串字符,这就是通过URL后面的字符串在两个网页之间传递参数,QueryString属性保存这些参数和值。

w2_3_2.aspx:

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="w4_2_2_2.aspx.cs" Inherits="csweb1_w4_2_2_2" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
     <div class="username">
       <p>
           <asp:Label ID="user" runat="server" Text="用户名:"></asp:Label> 
           <asp:TextBox ID="name" runat="server"></asp:TextBox>
           
       </p>
     <p>
         <asp:Label ID="pass" runat="server" Text="密码"></asp:Label>
         <asp:TextBox ID="password" runat="server" TextMode="Password"></asp:TextBox>
     
     </p>
     <p>
         <asp:Label ID="message" runat="server" Text=""></asp:Label>
     </p>
    <p>
        <asp:Button ID="submit" runat="server" Text="提交" οnclick="submit_Click" />
    </p>
    </div>

    </div>
    </form>
</body>
</html>

W2_3_2.aspx.cs:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

public partial class csweb1_w4_2_2_2 : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {


        if (Request.QueryString["name"] != null)
        {
            message.Text = "用户名:" + Request.QueryString["name"] + " ;密码:" + Request.QueryString["password"];

        }

                
    }
}

3.  Response对象

Response对象提供对当前页的输出流的访问,可以使用该对象将文本插入页中、设置Cookie的值和重定向浏览器到另一个URL等。

 

3.1 Respose对象的属性和方法:

http://www.php.cn/csharp-article-362980.html

3.2 应用Respose对象:

例:使用Write方法输出文本

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

public partial class csweb1_w4_2_2_2 : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {


     

        Response.Write("现在的时间是" + DateTime.Now.ToString());
        Response.Write("<br />");
        Response.Write("欢迎访问!");
                
    }
}

 

4.Server对象

Server对象提供了访问服务器对象的方法和属性,可以获取服务器的信息,对HTML文本进行编码和解码等。

 

4.1 Server对象的属性和方法:

https://www.cnblogs.com/yeshuimaowei/p/9193463.html

4.2 应用Server对象

例:使用Transfer和Execute方法重定向页面

W4_2.aspx:

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm2.aspx.cs" Inherits="csweb1.WebForm2" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <div>


       <div>
         <p>
           <asp:Button ID="Button1" runat="server" Text="Button1" οnclick="Button1_Click" /></p>

        <p>  
            <asp:Button ID="Button2" runat="server" Text="Button2" 
                οnclick="Button2_Click" /> </p>
       
       </div>
    
    </div>
    </form>
</body>
</html>

W4_2.aspx.cs:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace csweb1
{
    public partial class WebForm2 : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {


         

        }

        protected void Button1_Click(object sender, EventArgs e)
        {
            Server.Transfer("W2_3_2.aspx");
        }

        protected void Button2_Click(object sender, EventArgs e)
        {
            Server.Execute("W2_3_2.aspx");
        }
    }
}

 

5 Cookie对象

Response和Request对象都有一个Cookies属性,它们是存放Cookie对象的集合。一个Cookies是一段文本信息,能随着用户请求和网页在Web服务器和浏览器之间传递。Cookie对象的信息保存在客户端。

在.NET框架中,Cookie对象是由HttpCookie类来实现的。


   public HttpCookie(string name)
   public HttpCookie(string name,string value)


通常使用Response对象的Cookies集合属性设置Cookie信息,使用Resquest对象的Cookies集合属性读取Cookie信息。

5.1 Cookie对象的属性

⑴ Name属性
通过Cookie的Name属性来指定Cookie的名称,Cookie是按名称保存的。


⑵ Value属性
Cookie的Value属性用来指定Cookie中保存的值,为字符串形式。


⑶ Expires属性
Cookie的Expires属性为DateTime类型,用来指定Cookie的过期日期和时间,即Cookie的有效期。如不给Cookie指定有效期,则会话的Cookie不会存入用户硬盘,在浏览器关闭后就被删除。

5.2 Cookie 对象的应用

例:保存用户信息

 

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm3.aspx.cs" Inherits="csweb1.WebForm3" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <p>
            <asp:Label ID="Label1" runat="server" Text="用户名:"></asp:Label>
            
            <asp:TextBox ID="Name" runat="server"></asp:TextBox>
       </p>
       <p>
         
           <asp:Label ID="Label2" runat="server" Text="密码:"></asp:Label>
           <asp:TextBox ID="Password" runat="server" type="password"></asp:TextBox>
       </p>
       <p> 
           <asp:Button ID="Button1" runat="server" Text="提交" οnclick="Button1_Click" /> </p>
    </div>
    </form>
</body>
</html>

 

6 Session对象

当用户请求一个ASP.NET网页时,系统将自动创建一个Session(会话),退出应用程序或关闭服务器时,该会话撤消。系统创建会话时将为其分配一个字符串标识(SessionID),以实现对会话进行管理和跟踪。Session对象是一个对象集合,且一个Sesson是针对某个特定用户的。

6.1 Sesson对象的属性和方法

https://www.cnblogs.com/wxy520/p/5318361.html

https://blog.csdn.net/qq_37855507/article/details/82589165

 

6.2 Session对象的应用

例: 利用Session实现用户登录的验证

W6.2.1.aspx:

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm4_6_1.aspx.cs" Inherits="csweb1.WebForm4_6_1" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <div>

       <p>
            <asp:Label ID="Label1" runat="server" Text="用户名:"></asp:Label>
            
            <asp:TextBox ID="Name" runat="server"></asp:TextBox>
       </p>
       <p>
         
           <asp:Label ID="Label2" runat="server" Text="密码:"></asp:Label>
           <asp:TextBox ID="Password" runat="server" type="password" TextMode="Password"></asp:TextBox>
       </p>
       <p> 
           <asp:Label ID="Label3" runat="server" Text="未登录"></asp:Label> </p>
       <p> 
           <asp:Button ID="Button1" runat="server" Text="提交" οnclick="Button1_Click" /> </p>

           <p>
               <asp:HyperLink ID="HyperLink1" runat="server" NavigateUrl="~/WebForm4_6_2.aspx">第二个页面</asp:HyperLink></p>
    
    </div>
    </form>
</body>
</html>

w6.2.1.aspx.cs:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace csweb1
{
    public partial class WebForm4_6_1 : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (Session["UserName"] == null)
            {
                Label3.Text = "未登录";

            }
            /*
            if (Session["UserName"] != null) {
                Response.Redirect("Webform4_6_2.aspx");
            
            }
             */
          
        }

        protected void Button1_Click(object sender, EventArgs e)
        {
            if ("zixuan" == Name.Text && "123" == Password.Text) {
                Session["UserName"] = Name.Text;
                Label3.Text = Session["UserName"] + ",已登录";


            
            }
        }
    }
}

W6.2.2.aspx:

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm4_6_2.aspx.cs" Inherits="csweb1.WebForm4_6_2" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
       <p>
           <asp:Label ID="Label1" runat="server" Text=""></asp:Label></p>

      <p>  
          <asp:Button ID="Button1" runat="server" Text="返回登录页面" οnclick="Button1_Click" /></p>
        <p>
            <asp:Button ID="Button2" runat="server" Text="退出登录" οnclick="Button2_Click" /></p>
    
    </div>
    </form>
</body>
</html>

 

w6.2.2.aspx.cs:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace csweb1
{
    public partial class WebForm4_6_2 : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (Session["UserName"] != null)
            {
                Label1.Text = "你好," + Session["UserName"];
                Button1.Visible = false;


            }
            else {
                Label1.Text = "未登录";

            
            }
        }

        protected void Button1_Click(object sender, EventArgs e)
        {
            Response.Redirect("Webform4_6_1.aspx");
        }

        protected void Button2_Click(object sender, EventArgs e)
        {
            if (Session["UserName"] != null) {
                Session.Remove("UserName");
            
            }
        }
    }
}

 

 

 

7  Application对象

Application对象是运行在Web应用服务器上的虚拟目录及其子目录下所有文件、网页、模块和可执行代码的总和。一旦网站服务器被打开,就创建了Application对象,所有的用户共用一个Application对象,并可以对其进行修改。网站设计者利用Application可以方便地创建诸如聊天室和网站计数器等常用Web应用程序。


Application对象是一个对象集合,可以看作是存储信息的容器,为所有用户共享。

7.1 Application对象的属性和方法

https://www.cnblogs.com/ahao214/archive/2013/01/09/2852488.html

 

 

7.2 应用Application对象

例:设计一个简单聊天功能的网页


w7.2.aspx:

 

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="login2.aspx.cs" Inherits="login2" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title>简单聊天室</title>
    <link href="css/bootstrap.css" rel="Stylesheet" type="text/css" />
   
</head>
<body>
    <form id="form1" runat="server">
    <!--ctrl +j 提示-->
    <div class="container mt-5" style="width:400px;">
       <div class="card">
          <div class="card-header text-center">
             用户登录
          </div>
          <div class="card-body">
             <div class="form-group">
                <label>用户名:</label>
                 <asp:TextBox ID="userName" runat="server" CssClass="form-control"></asp:TextBox>
             </div>
                  <div class="form-group">
                <label>密码:</label>
                 <asp:TextBox ID="passWord" runat="server" CssClass="form-control" TextMode="Password"></asp:TextBox>
             </div>
             <div class="form-group text-center">
                 <asp:Button ID="btnSubmit" runat="server" Text="登录" 
                     CssClass="btn btn-secondary" οnclick="btnSubmit_Click"/>
                 <asp:Button ID="btn" runat="server" Text="退出" CssClass="btn btn-secondary"/>
             </div>
          </div>
          
       </div>
    
    </div>
    </form>
</body>
</html>

w7.2.aspx.cs:
 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

public partial class login2 : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {

    }
    protected void btnSubmit_Click(object sender, EventArgs e)
    {
        if (userName.Text.Trim() != null) {
            Session["UserName"] = userName.Text;
            Session["UserColor"] = GetRandomColor();
            Response.Redirect("~/ChatView2.aspx");
         
        
        }

    }
    //生成随机颜色
    private string GetRandomColor() {
        Random randomNum = new Random((int)DateTime.Now.Ticks);
        string[] color = { "Purple", "Red", "Bule", "SeaGreen", "Olive", "Orange" };
        return color[randomNum.Next(color.Length)];

    
    
    }
}