Response.Redirect与Server.Transfer区别

来源:互联网 发布:淘宝网天猫秋季女装 编辑:程序博客网 时间:2024/05/17 21:55

执行原理:

1、浏览器ASP文件请求->服务器执行->遇到response.redirect语句->服务器发送response.redirect后面的地址给客户机端的浏览器->浏览器请求执行新的地址

2、浏览器ASP文件请求->服务器执行->遇到Server.Transfer语句->服务器转向新的文件

简单的说:  
Response.Redirect    是通知客户端浏览器(客户端浏览器,地址栏地址发生变化)跳转的。  
    Server.Transfer    是在服务端跳转(客户端浏览器,地址栏地址不发生变化)  
也就是说,Response.Redirect    需要多走一个来回。而,Server.Transfer    能少走一个。  
Response.Redirect    对于客户端浏览来说,速度可能会慢点,但对于服务端能少些负担;  
Server.Transfer    对于客户端浏览会快一些(因为少走一个来回),但服务器负担会大一些。

 

1. Server.Transfer只能够转跳到本地虚拟目录指定的页面,而Response.Redirect则十分灵活;

Server.Transfer 只能在同一服务器端的同一站点间运行,所以你不能用 Server.Transfer 将用户重定向到另一服务器上的站点。要重定向到服务器以外的站点,只有 Response.Redirect 能办到。

2. Server.Transfer可以将页面参数方便传递到指定页面; 

Server.Transfer 保留浏览器端的 URL 地址.Request集合里的内容不会丢失 这对流线型的数据输入很有帮助,不过这也增加了调试的复杂度。

Server.Transfer 方法还有另一个参数——"preserveForm"。如果你设置这个参数为 True,比如:Server.Transfer("WebForm2.aspx", True), 那么 query string 和任何 form 变量都会同时传递到你定位的页面。

例:WebForm1.aspx 有一个文本框名为 TextBox1,你利用 preserveForm 为 True 传递到 WebForm2.aspx,你仍然可以用 Request.Form("TextBox1") 来取得文本框的值。

这种技术对向导式的多页面输入很有用,不过这里有一个你必须注意的问题是,当你使用 preserveForm 参数时,ASP.NET 有一个 bug,通常情况下,当试图传递 form 或 query string 值时会发生错误。 非官方的解决办法是在你要传递的目的页面中设置 enableViewStateMac 属性为 True,然后再将其设置回 False。这说明你需要使用 enableViewStateMac 的 False 值才能解决这个问题。

3. Server.Transfer可以减少客户端对服务器的请求

 

 

0 0
原创粉丝点击