ASP.NET WebForm--页面传值

页面传值

QueryString

他可以将传送的值显示在浏览器的地址栏中。

private void Button1_Click(object sender, System.EventArgs e) 
{ 
  string s_url; 
  s_url = "b.aspx?name=" + Label1.Text; 
  Response.Redirect(s_url); 
}

优点

  • 使用简单,对于安全性要求不高时传递数字或是文本值非常有效。
    缺点
  • 缺乏安全性,由于它的值暴露在浏览器的URL地址中的。
  • 不能传递对象。

Request.Form

  • Request.Form 获取窗体变量集合。有两重载,即Request.Form[string
    name]和Request.Form[int index]。
  • 获取表单指定名字的参数值(form表单中的method中一般用post)

Session

  • 作用于用户个人,所以,过量的存储会导致服务器内存资源的耗尽。
  • 当客户端向服务器发送一个请求时,如登陆用户ID,服务器接收到该请求,服务器端Session产生一个与该登陆用户相关的SessionID,并将SessioID返回给客户端,在新会话开始时,服务器将SessionID当做
    cookie存储在用户的浏览器中。
    使用方法
    1.在源页面的代码中创建你需要传递的名称和值构造Session变量:
Session["Name"]="Value(或 object)";

2.在目的页面的代码使用Session变量取出传递的值。

Result = Session["Name"]

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

清除一个:Session.Remove("session名");
清除所有:Session.Clear();
优点

  • 使用简单,不仅能传递简单数据类型,还能传递对象。
  • 数据量大小是不限制的。
    缺点
  • 在Session变量存储大量的数据会消耗较多的服务器资源。
  • 容易丢失。

Cookie

Cookie用于在用户浏览器上存储小块的信息,保存用户的相关信息,比如用户访问某网站时用户的ID,用户的偏好等,用户下次访问就可以通过检索获得以前的信息。
Cookie是存放在客户端的,而session是存放在服务器端的。而且Cookie的使用要配合ASP.NET内置对象Request来使用。

使用方法

创建cookie

HttpCookie cookie = new HttpCookie("UserInfo");//创建多值cookie
cookie.Expires = DateTime.Now.AddDays(1);//设置cookie的失效时间为一天,如果不设置失效时间,cookie会在浏览器关闭即消失,不会保存本地文件
cookie.Values["LoginName"] = txtusername.Text;
cookie.Values["Pwd"] = txtusername.Text;

这样创建了一个key为UserInfo的cookie,具有LoginName和Pwd两个属性。
创建为cookie不要忘记添加cookie,否则是取不出来的
Response.Cookies.Add(cookie);
注:如果使用response.Cookies创建cookie就不用写上一句代码了。
取cookie

HttpCookie cookies = Request.Cookies["UserInfo"];//取cookie
txtusername.Text = cookies.Values["LoginName"];//取cookie的LoginName属性 赋值给帐号文本框
txtpass.Attributes.Add("value",cookies.Values["Pwd"]);//密码框不能直接赋值,使用添加属性可以赋值

Session与Cookie配对使用,Session在服务器端产生SessionID,并将该SessionID返回给客户端,客户端Cookie来存储该SessionID,整过会话过程中,只要保存SessionID的Cookie不丢失,则Session的信息就不会丢失。

优点
1、Cookie易于使用和实现
实现cookie的使用要比任何其他Internet协议容易得多。

2、占用更少的内存
不需要任何服务器资源,并存储在用户的计算机上,因此不会给服务器带来额外的负担。

3、持久性
Cookie最强大的一个方面就是持久性。当在客户端的浏览器上设置Cookie时,它可以持续数天,数月甚至数年。这样可以轻松保存用户首选项和访问信息,并在用户每次返回站点时保持此信息可用。此外,由于Cookie存储在客户端的硬盘上,因此如果服务器崩溃,它们仍然可用。

4、 透明性
Cookie透明地工作,用户不知道需要存储的信息。

5、易于管理
大多数浏览器都可以让用户轻松清除浏览历史记录。只需转到工具,清除历史记录并选择Cookie即可。
Cookie存储在用户硬盘驱动器上的cookie.txt下的文本文件中,因为它是一个文本文件,我们可以使用任何查看器或文本编辑器来显示,编辑和删除它们。

缺点
1、隐私问题
大多数用户主要关心的是隐私。启用Cookie的Web浏览器会跟踪您访问过的所有网站。这意味着,经许可(或不在Google的情况下),第三方可以访问这些cookie存储的信息。在某些情况下,这些第三方可以是广告商,其他用户。。。。

2、不安全
Cookie安全性是一个大问题,因为它们是以明文形式存储,可能会造成安全风险,因为任何人都可以打开并篡改cookie。
Cookie容易在客户端被发现意味着它们很容易被黑客入侵和修改。

3、难以解密
我们可以手动加密和解密cookie,但由于加密和解密所需的时间,它需要额外的编码并影响应用程序性能。

4、大小有限制,只能储存简单字符串信息
cookie文本的大小(一般为4kb),cookie的数量(一般每个站点20个)存在一些限制,每个站点只能容纳20个cookie。
Cookie仅限于简单的字符串信息,他们无法存储复杂的信息。

5、可以被禁用
用户可以选择从浏览器设置中禁用其计算机上的cookie。这意味着用户可以决定不在他的浏览器上使用cookie,这可能会在浏览器的运行中产生一些问题。

6、可以被删除
用户可以从其计算机中删除cookie,这使他们可以更好地控制cookie。

Application

使用方法
在源页面的代码中创建需要传递的名称和值构造Application变量;

Application["name"] = Label1.Text; //Label1为控件ID

在目的页面的代码使用Application变量取出传递的值;

string name; 
Application.Lock(); 
name = Application["name"].ToString(); 
Application.UnLock(); 

优点
使用简单,可以传递数据与对象;
缺点
Application是作为全局变量进行传值,所以容易被误操作;

Server.Transfer

使用方法
在源页面的代码中,使用Server.Transfer跳转到目的页面传递页面数据;

public string Name 
{ 
  get{ return Label1.Text;} 
} 
private void Button1_Click(object sender, System.EventArgs e) 
{ 
  Server.Transfer("WebForm1.aspx"); 
}

在目的页面中,使用Context.Handler来接收数据;然后用formerPage的属性和方法来获取前一个页面的值;

private void Page_Load(object sender, EventArgs e) 
{ 
   WebForm newWeb;  //实例化WebForm窗体 
  newWeb = (source)Context.Handler; 
  string name; 
  name = newWeb.Name; 
}

优点
直接在服务器端重定向,使用简单方便;
缺点
可能出现指向性Bug问题,导致网站的图片等出错;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

sufengmarket

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值