asp.net 抓取网页数据(ASP.NET中页面间的传值2.使用传值方法)
优采云 发布时间: 2021-12-09 09:16asp.net 抓取网页数据(ASP.NET中页面间的传值2.使用传值方法)
1. 前言
在传统的 ASP 应用程序中,很容易通过 POST 方法将一个或多个值从一个页面传输到另一个页面。同样的方法在ASP.NET中实现有点麻烦。ASP.NET中页面之间传递值的方式有很多种。下面使用QueryString方法、Session方法、Server.Transfer方法、Cookie对象方法、Application对象方法、PostBackUrl属性方法、@PreviousPageType指令方法来理解ASP.NET页面。价值转移
2. 使用 QueryString 传递值
1) 简介
QueryString 是一种非常简单且常用的传值方式,但它在浏览器地址中显示传值。如果是传递一个或多个安全性要求不高或者结构简单的值,可以使用这种方法
2) 创建项目
文件,新建,网站,新建一个网站项目
选择ASP.NET网站,点击Browse选择保存位置,点击OK
3) 编码设计
Ø 切换回设计框
在代码编辑框下方,点击Design切换回网页设计界面
Ø设计一个发送数据的网页
在编辑框左侧的工具栏中,选择绘制web界面的控件
绘制如上图所示的web界面
Ø代码
编写Button_Click事件,创建一个字符串变量data,其值为web.aspx?name=TextBox1控件中输入的值,即要传递的值。Response.Redirect() 方法的意思是跳转到另一个页面,也就是Response。重定向(您要转到的页面.aspx)
Ø添加网页
右键单击项目文件并选择添加新项目
选择 Web 表单并修改其名称。这里的名字需要和前面数据值中web.aspx的名字一致。点击添加
创建后在工程文件中可以看到新创建的文件
Ø设计接收数据网页
使用工具箱在新创建的文件中绘制接收数据的网页
Ø代码
Request.QueryString 用于获取参数。给页面添加一条Request.QueryString语句,在访问页面时,URL后面有“?需要获取的参数=***”,那么这条语句会返回等号后面的赋值value 到 Label1 控件的 Text 属性,并将其显示写为 Label1.Text=Request.QueryString["需要获取值的参数"]
Ø测试
在文本框中输入文本,然后单击按钮
显示刚刚在文本框中输入的文本
3. 使用会话变量传递值
1) 简介
Session的特点是:数据保存在服务器端,可以保存任何类型的数据,默认生命周期为20分钟,可以手动设置更长或更短的时间,调用数据时的返回值之后保存会话中的数据是对象
2) 修改发送数据网页的代码
Session["name"]=Text.Box1.Text 表示将TextBox.Text的值写入Session,在Session过期前(默认为20分钟),可以通过Session["name ”]
3) 修改接收数据网页代码
标签1.Text=Session["name"].ToString(); 意思是获取Session中name的值,赋值给Label1.Text。由于Session的返回类型是对象类型,所以需要转换为String,即。字符串()
Session.Remove("name") 清除name的Session值并释放其空间
4) 测试
在文本框中输入文本,然后单击按钮
显示刚刚在文本框中输入的文本
4. 使用 Server.Transfer 传输值
1) 简介
使用 Server.Transfer 方法引导数据从当前页面流向另一个页面。新页面使用了上一个页面的响应流,所以这个方法是面向对象的
2) 修改发送数据网页的代码
Server.Transfer("web.aspx") 表示跳转到另一个页面。这种迁移到另一个页面的方式会保留服务资源,而不是简单地通知浏览器服务器已经更改了页面并迁移了请求
公共字符串名称
{
得到
{
重新运行 TextBox1.Text;
}
}
为这个页面设置一个公共属性。使用name属性时,返回值为TextBox1.Text上的数据
3) 修改接收数据网页代码
_default wb 表示创建发送数据页类的实例变量wb
wb=(_Default)Context.Handler 的意思是获取上一个网页传过来的对象,强制为_Default
Label1.Text=wb.name 将wb中的name属性值赋给Label1.Text
4) 测试
在文本框中输入文本,然后单击按钮
显示刚刚在文本框中输入的文本
5. 使用 Cookie 对象变量
1) 简介
与Session相比,Cookie数据存储在客户端
2) 修改发送数据网页的代码
HttpCookie cookie=new HttpCookie("name") 实例化HttpCookie的对象,HttpCookie提供了建立和操作独立HTTP cookie的安全类型的方法,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) 测试
在文本框中输入文本,然后单击按钮
显示刚刚在文本框中输入的文本
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) 测试
在文本框中输入文本,然后单击按钮
显示刚刚在文本框中输入的文本
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) 测试
在文本框中输入文本,然后单击按钮
显示刚刚在文本框中输入的文本
8. PostBackUrl 属性
1) 简介
和前面的方法基本一样,可以说是前面方法的另一种实现。前面的方法主要是通过直接返回控件来实现值的传递。这里我们使用发送数据页面上的搜索控件
2) 修改发送数据网页的代码
删除上面的代码
3) 修改接收数据网页代码
删除它
Label1.Text=((TextBox)PreviousPage.FindControl("TextBox1")).Text的意思是在发送数据页中找到控件ID为TextBox1的控件,强制进入TextBox,并为其赋值Text属性值到标签1.文本
4) 测试
在文本框中输入文本,然后单击按钮
显示刚刚在文本框中输入的文本
9. 解决现有问题
在点击Button按钮之前,也就是在处理Default.aspx之前,首先请求的是web.aspx。目前,没有数据。需要在web.aspx中的代码处理之前添加一个判断,使用IsCrossPagePostBack属性,允许检查请求是否来自Default.aspx,并在数据接收页面中写入:
写完后,先浏览web.aspx页面,然后跳转到web.aspx页面