asp.net页面之间的传值

第一种传值的方式:QueryString

基本介绍:使用querystring在页面间传值已经是一种很老的机制,这种方法的主要优点是实现起来非常简单。然而它的缺点是传递的值是会显示在浏览器的地址栏上的(不安全),同时又不能传递对象,但是传递的值少并且安全性不高的情况下,这个犯法还是一个不存的方案。

第一部分:

Default.aspx中的html文件:

   <div>
    &nbsp;
  <br />
&nbsp;&nbsp;&nbsp; 我是第一个页面<br />
        name :<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
        <br />
        email:<asp:TextBox ID="TextBox2" runat="server" Height="22px"></asp:TextBox>
    
    </div>
    <asp:Button ID="Button1" runat="server" οnclick="Button1_Click" Text="commit" />
    <asp:Button ID="Button2" runat="server" οnclick="Button2_Click" Text="reset" />

Default.aspx.cs中的html文件:

//提交
    protected void Button1_Click(object sender, EventArgs e)
    {
        string url;
        if (TextBox1.Text != "" && TextBox2.Text != "")
        { 
          url = "anotherwebform.aspx?name=" + TextBox1.Text + "&email=" + TextBox2.Text;
          Response.Redirect(url); 
        }
       
    }

//重置
    protected void Button2_Click(object sender, EventArgs e)
    {
        TextBox1.Text = "";
        TextBox2.Text = "";
    }
}


anotherwebform.aspx.cs:


        TextBox1.Text = Request.QueryString["name"];
        TextBox2.Text = Request.QueryString["email"];


第二种传值的方式:Session变量

基本介绍:

基本原理:使用session变量是可以在页面传递值的另一种方式,在本例中我们把控件中值放在Session变量中,然后在另一个页面中使用它,以不同页面间实现值传递的目的。

缺点:但是需要注意的是在session变量存储的过多的数据会消耗较多的服务器资源,在使用session是应该慎重,当然了,我们应该用一些清理动作去除一些不需要的seeion来降低资源的无谓消耗。

起始页面:

 //第二种方式:session
        Session["name"] = TextBox1.Text;
        Session["email"] = TextBox2.Text;
        Server.Transfer("anotherwebform.aspx");

目的页面:

TextBox1.Text = Session["name"].ToString();
TextBox2.Text = Session["email"].ToString();
//将变量清空
Session.Remove("name");
Session.Remove("email");

第三种传值的方式:使用Cookie对象

 Cookie用于在用户浏览器上存储小快的信息,保存用户的相关信息。

比如用户访问某网站是用户的ID,用户的偏好等,用户下次访问就可以通过检索获得以前的信息。

所以cookie也可以在页面间传值。

cookie通过http头在浏览器和服务器之间来回传递的。

cookie只能包含字符串的值,如果现在cookie储存整数值,那么需要先转换为字符串的形式。可以通过遍历request对象的cookie集合可以获得所有的浏览器所有的cookie。

起始:

 HttpCookie objCookie = new HttpCookie("myCookie",TextBox1.Text.ToString());
        Response.Cookies.Add(objCookie);

目的:

string myName = Request.Cookies["myCookie"].Value;



第四种方式:使用server.Transfer

server.Transfer是从当前的aspx页面转到新的aspx页面,服务器端执行并输出。

在新页面中通过Context.Handler来获得前一个页面传递的各种数据类型的值、表单数据、querystring。

由于重定向完全在服务器端完成,所以客户端浏览器中url地址是不变的,调用server,Tranfer时,当前的aspx页面终止执行,执行流程转入另一个aspx页面,但新的aspx页面仍使用前一个aspx页面创建的应答流。


比较:server.Tranfer、Response.Redirect

1.server.Tranfer在服务器端完成,所以客户端浏览器中的url地址是不会改变的;

reponse.redirect是客户端完成,向服务器端提出的页面处理请求,所以客户端浏览器中的url地址是会改变

2、server.tranfer在服务器端完成,不需要客户端提出请求,减少了客户端对服务气短提出请求

3、server.transfer只能够跳转到本地虚拟目录指定的页面,也就是工程项目中的页面,而response.redirect可以跳转到任何url地址

4.server.transfer可以将前一个页面的各种类型的值传到新的页面,response.redirect则只能借助url中带参数或是结合上面的四种办法把各种类型的值转到新的页面。



由于不能打印ArrayList:http://www.360doc.com/content/09/0224/16/74246_2633056.shtml




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值