整合:asp.net 中的跨页面(页面重定向)和跨页面提交问题
来源:互联网 发布:大数据辛金日元 编辑:程序博客网 时间:2024/05/29 18:35
(页面重定向)方法:Server.Transfer,Response.Redirect,Server.Execute的区别
在asp.net4.5中可以采用<a>元素.HyperLink控件,Response.Rediret(),Server.Execute()和Server.Transfer()方法实现页面重定向
其中Server.Transfer(ASP 3.0 以上) 和 Response.Redirect 在以前的 ASP 中就存在了,区别在于:
1、Server.Transfer – (实际发生在服务器端,URL不变)
只能重定向到同一网站的不同页面
页面信息流的方向是:
服务器->服务器->客户端Server.Transfer("web2.aspx"); //页面转向(服务器上执行).
服务器停止解析本页,保存此页转向前的数据后,再使页面转向到web2.aspx,
用于把处理的控制权从一个页面转移到另一个页面,
并将转向前数据加上web2.aspx页结果返回给浏览器.
在转移的过程中,没有离开服务器,内部控件(如:request, session 等)的保存的信息不变,
因此,你能从页面 A 跳到页面 B 而不会丢失页面 A 中收集的用户提交信息。
参数使用:
Server.Transfer 方法一个参数——"preserveForm"。设置 True,比如:Server.Transfer("Web2.aspx", True),
那么 Querystring 和任何 变量都会同时传递到你定位的页面。通常情况下,当试图传递 变量 或 query string 值时会发生错误。
非官方的解决办法是在你要传递的目的页面中设置 enableViewStateMac 属性为 True,然后再将其设置回 False。
2、Response.Redirect – (在服务器端执行,重定向实际发生在客户端,浏览器的 URL 栏不变)
传递数据时状态管理采用查询字符串形式
可重定向到同一网站的不同页面,也可重定向到其他网站的页面
页面信息流的方向是:
服务器->客户端->服务器->客户端当浏览器请求aspx页面时,碰到Redirect(url)方法,
相当于告诉浏览器,你先需访问某页面,于是浏览器再向服务器发送一个到此页面的请求.将无法保存所有的内部控件数据,页面 A 跳转到页面 B,页面 B 将无法访问页面 A 中 变量提交的数据。
重定位是通过浏览器执行的,在服务器和浏览器之间会产生额外的往返过程。
优缺:
在网络状态较好的情况下,Redirect(url)方法效率最高
在网络状况不是很好的情况下,两次请求会大大的,降低应用程序的反应速度,甚至占用多余的带宽.
3.Server.Execute方法-状态管理方式与button控件的跨页面提交方式相同
只能重定向到同一网站的不同页面
Server.Execute("web2.aspx");
服务器保存此页转向前的数据后,使页面转向到web2.aspx执行,
再返回本页继续执行.再将三者结果合并后返回给浏览器.
以上都是服务器端页面转向所以浏览器不出现页更改记录(显示的地址不变).
因此,如果用户刷新此页,也许会出现一些其它意外情况.
此类页转向,可完成一些其它功能,比如访问到前一页面中的服务端控件.
总结:
在网络状态较好的情况下,Redirect(url)方法效率最高!!
Server.Transfer方法和Server.Execute方法最灵活!!
Server.Execute方法占用资源最多.
注意:
1、Response.Redirect()能够传递的数据以2KB为限。2、传递的数据超过2KB时,务必使用Server.Transfer()
ASP.NET页面之间传递值的几种方式
QueryString,session,cookies,application,server.Transfer,respose.redictor.
附:Page.Navigate (仅供了解)
Page.Navigate –是 ASP.NET Beta 1 提供的功能 Page.Navigate 实现的功能和 Response.Redirect 差不多,它实际上包括三个步骤:
首先调用 Response.Redirect,其次依次卸载所有的控件,最后调用 Response.End。 特别要注意的是:在 .NET Beta 2 中,Microsoft 将不再包括 Page.Navigate 这个功能,大家应该现在就用 Response.Redirect 来代替 Page.Navigate,以节省将来升级时的时间。跨页面提交
Button类型(在源页面)将button类型控件的postbackurl属性值设置为目标页面的路径,在目标页面,需要在页面头部添加@previouspagetype(前页类型)指令,并设置virtualpath(虚拟路径)属性值为源页面路径<%@ PrevioousPageType VirtualPath="地址" %>在目标页面上访问源页面中的数据的方法有两种:一是利用previouspage.findControl()方法访问源页面控件;二是先在源页面上定义公共属性,再在目标页面上利用“previouspage.属性名”获取源页面中的数据。使用server.execute()和server.transfer()方法时,目标页面也是通过previouspage访问源页面的。区分是跨页面提交还是调用了server.execute()或server.transfer()方法?需要在目标页面的.CS文件中判断PreviousPage.IsCrossPagePostBack(交叉回发)的属性值true为跨页面提交,false则为调用了server.execute()或server.transfer()方法
阅读全文
0 0
- 整合:asp.net 中的跨页面(页面重定向)和跨页面提交问题
- asp.net中的页面重定向详解
- ASP.NET中的地址重定向(页面跳转)
- ASP.NET 2.0中的跨页面提交
- ASP.NET 2.0中的跨页面提交
- ASP.NET 2.0中的跨页面提交
- ASP.NET 2.0中的跨页面提交
- ASP.NET 2.0中的跨页面提交
- ASP.NET 2.0中的跨页面提交
- ASP.NET 2.0中的跨页面提交
- ASP.NET 2.0中的跨页面提交
- ASP.NET 2.0中的跨页面提交
- ASP.NET 2.0中的跨页面提交
- ASP.NET 2.0中的跨页面提交
- ASP.NET 2.0中的跨页面提交
- ASP.NET 2.0中的跨页面提交
- ASP.NET 2.0中的跨页面提交
- ASP.NET 2.0中的跨页面提交
- linux 驱动学习之list链表机制
- js 内部运行顺序--初学者必看
- Bean property 'address' is not readable or has an invalid getter method: Does the return type of th
- ubuntu下搭建Hexo+GitHub博客
- LinkedHashSet的实现原理
- 整合:asp.net 中的跨页面(页面重定向)和跨页面提交问题
- python tkinter画布
- 【matlab】基于DCT变换的数字水印
- 欢迎使用CSDN-markdown编辑器
- iOS 高清二维码的生成,并保存到本地相册
- jsp对URL即参数编码
- ZOOM:1 作用详解
- print 格式化输出
- 解决eclipse集成maven插件 add dependencies搜索不到jar包的问题