天天看点

ASP.NET页面之间传递值的四种方式

ASP.NET页面之间传递值的几种方式

QueryString,Session,Cookies,Application。

一、QueryString

QueryString是一种非常简单的传值方式,他可以将传送的值显示在浏览器的地址栏中。如果是传递一个或多个安全性要求不高或是结构简单的数值时,可以使用这个方法。但是对于传递数组或对象的话,就不能用这个方法了。

这种方法的优点:1.使用简单,对于安全性要求不高时传递数字或是文本值非常有效。

这种方法的缺点:1.缺乏安全性,由于它的值暴露在浏览器的URL地址中的。

        2.不能传递对象。

使用方法:1.在源页面的代码中用需要传递的名称和值构造URL地址。

     2.在源页面的代码用Response.Redirect(URL);重定向到上面的URL地址中。

     3.在目的页面的代码使用Request.QueryString[“name”];取出URL地址中传递的值。

例子:(1)a.aspx 从文本框获取值拼接

protected void btnLogin_Click(object sender, EventArgs e) //创建一个button按钮
    {
        string usname = tbxUserName.Text.Trim(); //获取文本框的值
        string password = tbxPassWord.Text.Trim();//获取文本框的值
        string url = "b.aspx?UserName=" + usname + "&Password=" + password;//拼接Url
        Response.Redirect(url);//Url重定向
    }
           

(2)b.aspx 读取数据

protected void Page_Load(object sender,EventArgs e)
{
Username.Text = Request.QueryString["usname"];//访问解析当前字段值并显示
PassWord.Text = Request.QueryString["password"];//访问解析当前字段值并显示
}
           

二、Session

想必这个肯定是大家使用中最常见的用法了,其操作与Application类似,作用于用户个人,所以,过量的存储会导致服务器内存资源的耗尽。

优点:1.使用简单,不仅能传递简单数据类型,还能传递对象。

   2.数据量大小是不限制的。

缺点:1.在Session变量存储大量的数据会消耗较多的服务器资源。

   2.容易丢失。

使用方法:1.在源页面的代码中创建你需要传递的名称和值构造Session变量:Session[“Name”]=“Value(Or Object)”;

2.在目的页面的代码使用Session变量取出传递的值。Result = Session[“Nmae”]

注意:session不用时可以销毁它,销毁的方法是:

  清除一个:Session.Remove(“session名”); 

  清除所有:Session.Clear();

(1) a.aspx 生成Session

protected void Button1_Click(object sender, EventArgs e)
 {
Session["UserName"] = UserName.Text; //获取文本框值生成Session
Sesston["PassWord"] = PassWord.Text; //获取文本框值生成Session
Response.Pediret("b.aspx"); //页面跳转
//Server.Transfer("b.aspx"); //页面转跳
}
           

(1)b.aspx 获取Session

protected void Page_Load(object sender, EventArgs e)
    {
        Username.Text = Session["Username"].ToString(); //获取Session值赋值
        PassWord.Text = Session["PassWord"].ToString();//获取Session值赋值
    }
           

三、Application

(1).a.aspx 生成 Application值

protected void Button1_Click(object sender, EventArgs e)
    {
        Application["UserName"] = UserName.Text; 
        Server.Transfer("b.aspx");
    }
           

(2).b.aspx 获取Application值

protected void Page_Load(object sender, EventArgs e)
    {
        Application.Lock(); //锁定
        Username.Text = Application["Username"].ToString(); //获取Application值赋值
        Application.UnLock(); //解锁
    }
           

1、Application对象的作用范围是整个全局,也就是说对所有用户都有效。它在整个应用程序生命周期中都是有效的,类似于使用全局变量一样,所以可以在不同页面中对它进行存取。它和Session变量的区别在于,前者是所有的用户共用的全局变量,后者是各个用户独有的全局变量。可能有人会问,既然所有用户都可以使用application变量,那他可以用在什么场合呢?这里举个例子:网站访问数。多个请求访问时都可以对它进行操作。

2、优点:使用简单,消耗较少的服务器资源;不仅能传递简单数据,还能传递对象;数据量大小是不限制的。

3、缺点:作为全局变量容易被误操作。所以单个用户使用的变量一般不能用application。

4、在源页面的代码中创建你需要传递的名称和值构造Application变量:Application[“name”]=“Value(Or Object)”;在目的页面的代码使用Application变量取出传递的值。Result = Application[“name”]。

5、常用lock和unlock方法用来锁定和解锁,为了防止并发修改。

四、Cookie

(1) a.aspx

protected void Button1_Click(object sender, EventArgs e)
    {
        string UserNames = ""; 
        UserNames = UserName.Text;
        HttpCookie objCookie = new HttpCookie("myCookie", UserNames);
        Response.Cookies.Add(objCookie); 
         Server.Transfer("b.aspx");

    }
           

(2) b.aspx

protected void Page_Load(object sender, EventArgs e)
    {
        Username.Text = Request.Cookies["myCookie"].Value; //获取Cookie值
    }
           

这个也是大家常使用的方法,Cookie用于在用户浏览器上存储小块的信息,保存用户的相关信息,比如用户访问某网站时用户的ID,用户的偏好等,用户下次访问就可以通过检索获得以前的信息。所以Cookie也可以在页面间传递值。Cookie通过HTTP头在浏览器和服务器之间来回传递的。Cookie只能包含字符串的值,如果想在Cookie存储整数值,那么需要先转换为字符串的形式。

与Session一样,其是什对每一个用户而言的,但是有个本质的区别,即Cookie是存放在客户端的,而session是存放在服务器端的。而且Cookie的使用要配合ASP.NET内置对象Request来使用。

优点:1.使用简单,是保持用户状态的一种非常常用的方法。比如在购物网站中用户跨多个页面表单时可以用它来保持用户状态。

缺点:1.常常被人认为用来收集用户隐私而遭到批评。

2.安全性不高,容易伪造。