在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
ASP.NET中实现页面间的参数传递
编写人:CC阿爸
2013-10-27
l 近来在做泛微OA与公司自行开发的系统集成登录的问题。在研究泛微页面间传递参为参数,综合得了解了一下现行页面间传参数的方式
经过在网大致可以归类为以下几种情况,现记录下来。供日后参考 一、 使用QueryString: 使用QueryString在页面间传递值是一种非常常见的方法,我们在ASP中就常常用到。 优点和缺点 a)
使用方法 b)
可能出现的问题 方法一:需要重新设置Web.config中的encoding和全球化设置。 1、首行:<?xml
version="1.0" encoding="utf-8" ?> 方法二:使用Server.UrlEncode和Server.UrlDecode对汉字或者特殊字符进行编码和解码。
二、 使用Application变量是在页面间传递值。 Application变量在整个应用程序生命周期中都是有效的,类似于使用全局变量一样,所以可以在不同页面中对它进行存取。它和Session变量的区别在于,前者是所有的用户共用的全局变量,后者是各个用户独有的全局变量。 (1)优点和缺点
优点:
缺点: (2)使用方法
三、 使用Session变量 使用Application变量是在页面间传递值的第三种方式。Session变量和Application变量非常类似,它们的区别也已经在上面关于,Application变量时提到了。 (1)优点和缺点
缺点: (2)使用方法 1.在源页面的代码中创建你需要传递的名称和值构造Session变量:Session["Nmae"]="Value(Or Object)"; 2.在目的页面的代码使用Session变量取出传递的值。Result = Session["Nmae"] 四、 使用Cookie对象
时用户的ID,用户的偏好等,用户下次访问就可以通过检索获得以前的信息。所以Cookie也可以在页面间传递值。Cookie通过HTTP头在浏览器 和服务器之间来回传递的。Cookie只能包含字符串的值,如果想在Cookie存储整数值,那么需要先转换为字符串的形式。
优点:
缺点:
1.在源页面的代码中创建你需要传递的名称和值构造Cookie对象:
五、 使用Server.Transfer
。Server.Transfer是从当前的ASPX页面转到新的ASPX页面,服务器端执行新页并输出,在新页面中通过Context.Handler来获得前一个页面传递 的各种数据类型的值、表单数据、QueryString.由于重定向完全在服务器端完成,所以客户端浏览器中的URL地址是不会改变的。 [2] 在这里比较一下Server.Transfer和在“一”中使用的Response.Redirect的区别。 新的页面处理请求,所以客户端浏览器中的URL地址是会改变的。 URL地址。 把各种类型的值传到新的页面。 (1)优点和缺点 优点: 缺点: 或其子目录下,那么使用相对路径的图片、超链接都会导致错误的指向。[3]
1.在源页面的代码中,使用Page类的Server.Transfer跳到另一个页面传递页面数据: 2.在目的页面中,使用Context.Handler来接收数据: 需要注意的是获取这些值必须在新的页面首次加载时,才能正确获取上一页面的各种数据类型或是控件的值。在以后的postback时,就无法 获取上一页面的各种数据类型或是控件的值了,因为此时得到的当前页面的实例. 所以需要在新页面(destinationWebForm.aspx)的Page_Load ()事件中使用if(!IsPostBack)把获取前一个页面的值的代码包含起来,才能获得前一个页面传递的各种数据类型的值、表单数据、QueryString。 六、 使用POST方式来传递参数值(泛微即采用该模式传集成登录中设置的用户名和密码) 先简单的介绍一下get与post l Get:是以实体的方式得到由请求URI所指定资源的信息,如果请求URI只是一个数据产生过程,那么最终要在响应实体中返回的是处理过程的结果所指向的资源,而不是处理过程的描述。 l Post:用来向目的服务器发出请求,要求它接受被附在请求后的实体,并把它当作请求队列中请求URI所指定资源的附加新子项,Post被设计成用统一的方法实现下列功能: 1. 对现有资源的解释 2. 向电子公告栏、新闻组、邮件列表或类似讨论组发信息。 3. 提交数据块 4. 通过附加操作来扩展数据库 从从上面描述可以看出,Get是向服务器发索取数据的一种请求;而Post是向服务器提交数据的一种请求,要提交的数据位于信息头后面的实体中。 HTTP请求:get与post方法的区别 l 相同点; Get与post(对于“post”除非相应里有cache-control或者expires头域指示其相应不可缓存)请求的相应是可缓存的; l 不同点: 1. Get是从服务器上获取数据,post是向服务器传送数据 2. Get是把参数数据队列加到提交表单的action属性所指定的URL中,值和表单中各个字段一一对应,在URL中可以看到,post是通过HTTP post机制,将表单内各个字段与其内容放置在html header内一起传送到action属性所指的URL地址,用户看不到这个过程; 3. get传送的数据量较小,不能大于1024kb;post传送的数据量较大,一般被默认为不受限制的。但理论上,2G 4. get安全性非常低;post安全性较高; 5. get适用于多请求,而保留post仅用于更新站点; 6. 在form提交的时候,如果不指定method,则默认为get请求,form中提交的数据将会附加在url之后,以?与URL分开。字母数字字符原样发送,但空格转换为“+”号,其它符号转换为%xx,其中xx为该符号为16进制表示的ASCII(或ISO Latin-1)值; 7. get请求提交的数据放置在HTTP请求协议头中,而post提交的数据则放在实体数据数据中;
在表单中适用“post”和“get”区别 在form里面,可以适用post也可以适用get。它们都是method的合法取值。但是,post和gei方法在适用上至少两点不同; 1. get方法通过URL请求来传递用户的输入。Post方法通过另外的形式。 2. get方式的提交需要用Request.QueryString来取得变量的值,而post方式提交时,必须通过Request.Form来访问提交的内容,如: Request.Form["参数名"] 、Request["参数名"]、Request.Param["参数名"] |
请发表评论