您的位置:首页 > 编程语言 > ASP

ASP.NET页面间的传值方法

2010-10-31 21:22 155 查看
1. 前言
传统的ASP应用程序中,能够通过POST方法很容易把一个值或多个值从一个页面传送到另一个页面,用同样的方法在ASP.NET中实现有点麻烦。在ASP.NET中页面间的传值方法有很多,下面通过QueryString方法,Session方法,Server.Transfer方法,Cookie对象方法,Application对象方法,PostBackUrl属性方法,@PreviousPageType指令方法来进行了解ASP.NET页面间的传值
2. 使用QueryString传值
1) 简介
QueryString是一种非常简单也是使用比较多的一种传值方式,但是他将传递的值显示在浏览器的地址中,如果是传递一个或多个安全性要求不高或是结构简单的数值时,可以使用这个方法
2) 创建工程




文件、新建、网站,新建一个网站工程




选择ASP.NET网站,单击浏览选择要保存的位置,单击确定
3) 编码设计
Ø 切回设计框




在代码编辑框的下面,单击设计,切换回网页的设计界面
Ø 设计发送数据网页




在编辑框左边的工具栏中,选中控件绘制网页界面




将网页界面绘制成上图所示
Ø 编码




编写Button_Click事件,创建一个字符串变量data,其值为web.aspx?name=TextBox1控件中输入的值,即要传的值,Response.Redirect()方法表示跳转到其他的页面,即Response.Redirect(要转到的页面.aspx)
Ø 添加网页




在工程文件上单击右键选择添加新项




选择Web窗体,并修改其名称,这里的名称需要与前面data值中web.aspx的名称一样,单击添加




创建好后可以再工程文件中看到新建的文件
Ø 设计接收数据网页




利用工具箱,在新建的文件中绘制接收数据的网页
Ø 编码




Request.QueryString是用来获取参数,在页面中加入Request.QueryString语句,并且访问该页面时URL的后面带有“? 需要获取值的参数=***”,那么这条语句将返回等号后面的值,把这个值赋给Label1这个控件的Text属性上,将其显示写成Label1.Text=Request.QueryString[“需要获取值的参数”]
Ø 测试




在文本框中输入文字,单击Button




显示出刚刚输入文本框中的文字
3. 使用Session变量传值
1) 简介
Session的特点为:的数据保存在服务器端、可以保存任意类型的数据、默认的生命周期是20分钟,可以手动设置更长或更短的时间,使用Session保存数据后调用该数据时返回值是object
2) 修改发送数据网页代码




Session[“name”]=Text.Box1.Text指将TextBox.Text的值写入Session,在Session失效之前(默认为20分钟)可通过Session[“name”]获取他的值
3) 修改接收数据网页代码




Label1.Text=Session[“name”].ToString();表示将Session中name的值获取并赋给Label1.Text,由于Session返回类型为object类型,所以需要转换成字符串,即.Tostring()
Session.Remove(“name”)清除掉name的Session的值,并释放其空间
4) 测试




在文本框中输入文字,单击Button




显示出刚刚输入文本框中的文字
4. 使用Server.Transfer传值
1) 简介
使用Server.Transfer方法把数据流从当前页面引导到另一个页面中,新的页面使用前一个页面的应答流,所以这个方式是面向对象
2) 修改发送数据网页代码




Server.Transfer(“web.aspx”) 表示跳转到其他的页面,这种方式迁移到另一个页面会保持服务资源,而不是简单的通知浏览器服务端换了个页面并迁移请求
public string name
{
get
{
retrun TextBox1.Text;
}
}
为这个页面设定一个公开属性,当使用name属性时,返回值是TextBox1.Text上的数据
3) 修改接收数据网页代码




_Default wb表示创建发送数据页面类的实例变量wb
wb=(_Default)Context.Handler表示获取前一个网页传递过来的对象,并强制转换为_Default
Label1.Text=wb.name将wb中的name属性值赋给Label1.Text
4) 测试




在文本框中输入文字,单击Button




显示出刚刚输入文本框中的文字
5. 使用Cookie对象变量
1) 简介
相对于Session而言,Cookie数据是存放在客户端
2) 修改发送数据网页代码




HttpCookie cookie=new HttpCookie(“name”)实例化HttpCookie的对象,HttpCookie提供一个建立和操作独立HTTP cookies的安全类型的方式,name为保存数据的变量名
cookie.Value=TextBox1.Text将输入的信息赋给cookie.Value属性
Response.AppendCookie(cookie)将cookie添加到内部Cookie集合
3) 修改接收数据网页代码




Label1.Text=Request.Cookies[“name”].Value.ToString()取出Cookie中的name的值,将其转换为字符串并赋给Label1.Text
4) 测试




在文本框中输入文字,单击Button




显示出刚刚输入文本框中的文字
6. 使用Application对象变量
1) 简介
Application对象的作用范围是整个全局,也就是说对所有用户都有效,此方法不常使用,因为Application在一个应用程序域范围共享,所有用户可以改变及设置其值,故一般应用在计数器等需要全局变量的地方
2) 修改发送数据网页代码




Application[“name”]=TextBox1.Text将在Text Box1.Text中输入的值赋给Application对象,其保存数据的变量名为name
3) 修改接收数据网页代码




Label1.Text=Application[“name”].ToString()取出Application中的name的值,将其转换为字符串并赋给Label1.Text
4) 测试




在文本框中输入文字,单击Button




显示出刚刚输入文本框中的文字
7. 使用@PreviousPageType指令
1) 简介
这个指令是.net 2.0中的一个新指令,用于处理ASP.NET 2.0提供的跨页面传送新功能,用于指定跨页面的传送过程起始于哪个页面
2) 修改发送数据网页代码
将Button1中的Button1_Click事件去掉




在页面设计框中单击源




在Button1中添加上图红框内的代码,表示单击Button后,页面转至web.aspx




设置一个属性,返回一个TextBox的控件对象
3) 修改接收数据网页代码




将上面的代码添加在最上方,即设置回送时传送页面的地址




将上一页面中的name返回值的Text属性值赋给Label1.Text
4) 测试




在文本框中输入文字,单击Button




显示出刚刚输入文本框中的文字
8. PostBackUrl属性
1) 简介
与上一方法基本一样,可以说是上一种方法的另一种实现,上一种方法主要通过直接返回控件来实现传值,这里使用的是在发送数据页面查找控件
2) 修改发送数据网页代码




删除上面的代码
3) 修改接收数据网页代码




将其删除




Label1.Text=((TextBox)PreviousPage.FindControl(“TextBox1”)).Text表示在发送数据页面查找控件ID为TextBox1的控件,将他强制转换成TextBox,并将其Text属性值赋给Label1.Text
4) 测试




在文本框中输入文字,单击Button




显示出刚刚输入文本框中的文字
9. 解决存在问题
在没有单击Button按钮之前,也就是未处理Default.aspx之前,先请求了web.aspx,此时是不存在数据的,需要在web.aspx中的代码处理之前加入一个判断,使用IsCrossPagePostBack属性,允许检查请求是否来自Default.aspx,在接受数据页面写入:




写完后,此时先浏览web.aspx页面会跳转到web.aspx页面
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息