【转】Server.Transfer页面转向和Response.Redirect页面转向差异

/*自己总结*/

Response.Redirect可以转向本地页面和外链页面

Server.Transfe只能转向本地页面

/*原文摘要*/

Response是叫浏览器去重新转向到指定的网页,而Server自然是发生在服务器端为主了,因此会有以下区别:

1. Server.Transfer只能够转跳到本地虚拟目录指定的页面,而Response.Redirect则十分灵活;
2. Server.Transfer可以将页面参数方便传递到指定页面;
3. 使用时,Server.Transfer跳到别的页面后,浏览器显示的地址不会改变,有时反而会造成误会,当然也有些场合需要这样的效果;
4. Server.Transfer可以减少客户端对服务器的请求

Server.Transfer只能是具体的页面,不能添加url参数。但页面内变量可以保持传递。

Server.Transfer跳转页面的状态与Response.Redirect类似。 但是它们之间还是有一些差别的。

首先,用Server.Transfer迁移到另一个页面保持着服务资源。 而不是简单的通知浏览器服务端换了个页面并迁移请求。这 意味着你不需要携带更多的Http请求,因此可以减轻服务端的 压力而使你的应用运行得更快。

但是,注意:因为"Transfer"过程只能在那些在同一服务端的 站点上,你不能使用Server.Transfer使用户跳转到外部的站点。 这点只有Response.Redirect能做到。

第二,Server.Transfer维持着浏览器原始的URL,这对于流线型的数据入口技术,虽然它有可能导致调试的时候的数据混乱

还有,Server.Transfer方法还有二个参数的重载方法—— "preserveForm"如果你将其设置为True(默认情况是False), 使用一个状态比如:Server.Transfer("WebForm2.aspx", True), 现存的请求字符串和所有的Form里的变量将被保持并提交到你的 目标页。

但是必须注意的是,这里有一个奇怪的Bug(微软为什么有这样的Bug)。当你使用两个参数的重载方法试图迁移form和请求字符串的时候会有可能产生错误。

非官方的解决办法是将要被跳转的画面的enableViewStateMac的属性设置为 True , 然后再设回 False.

时间: 2024-08-15 17:39:57

【转】Server.Transfer页面转向和Response.Redirect页面转向差异的相关文章

MVC 使用Response.Redirect页面301重定向

在Global.cs中 protected void Application_BeginRequest(object sender, EventArgs e){      string strUrl = Request.Url.ToString().Trim().ToLower();      if (strUrl.Contains("http://bianyun.net"))      {            Response.RedirectPermanent(strUrl.Re

Server.Transfer()与Response.Redirect()区别

Server.Transfer()地址栏路径不变化,只是后台处理改变 另外server.transfer最好是本目录或者本目录下子目录,不要跨到上一级目录 大多数人使用Response.Redirect 将用户引导到另一个页面,而另一些人好像偏爱于神秘的Server.Transfer,那么,Response.Redirect 和Server.Transfer有什么区别? Response.Redirect简单地发送一条消息到浏览器,告诉浏览器定位到另一个页面.你可以使用下面的代码将用户引导到另一

Response.Redirect和Server.Transfer比较--(转)

大多数人使用Response.Redirect 将用户引导到另一个页面,而另一些人好像偏爱Server.Transfer. 那么,Response.Redirect 和Server.Transfer   有什么区别? Response.Redirect简单地发送一条消息到浏览器,告诉浏览器定位到另一个页面. 例如:Response.Redirect("http://www.zhisi.net/") Server.Transfer也是通过一条语句将用户引导到另一页面,比如:Server.

页面跳转 Server.Transfer和 Response.Redirect的区别

1.Server.Transfer 用于把处理的控制权从一个页面转移到另一个页面,在转移的工程中没有离开服务器内部控件(如request,session等)保存的信息不变.因此你能从a页面跳转到b页面而不丢失a页面里的信息. 2.Response.Redirect 发送一个HTTP响应到客服端浏览器,告诉客服端跳转到哪一个页面,客服端在发送跳转请求到服务器.使用此方法将无法保存内部控件的数据,页面a跳转到页面b,而页面b将无法访问a中form提交的数据. 而在具体比较如下 Server.Tran

Server Transfer()和Response.Redirect()的使用

一.Server Transfer() Server.Transfer:对于当前请求,终止当前页的执行,并使用指定的页url路径来开始执行一个新页. 1. Server.Transfer只能够转跳到本地虚拟目录指定的页面,而Response.Redirect则十分灵活: 2. Server.Transfer可以将页面参数方便传递到指定页面: 3. 使用时,Server.Transfer跳到别的页面后,浏览器显示的地址不会改变,有时反而会造成误会,当然也有些场合需要这样的效果: 4. Server

Response.Redirect与Server.Transfer区别

执行原理: 1.浏览器ASP文件请求->服务器执行->遇到response.redirect语句->服务器发送response.redirect后面的地址给客户机端的浏览器->浏览器请求执行新的地址 2.浏览器ASP文件请求->服务器执行->遇到Server.Transfer语句->服务器转向新的文件 简单的说: Response.Redirect    是通知客户端浏览器(客户端浏览器,地址栏地址发生变化)跳转的. 而    Server.Transfer   

response.redirect和server.Transfer的差别详解

Response.Redirect和Server.Transfer都能实现页面的跳转,但两者又有很大区别. 一 地址栏里显示的地址不同 Response.Redirect会显示跳转的网页的地址,而Server.Transfer显示跳转前的网页的地址.假如用上述两种方式实现WebForm1.aspx跳转到WebForm2.aspx Response.Redirect跳转后地址栏会显示…/WebForm2.aspx Server.Transfer    跳转后地址栏则显示…/WebForm1.asp

Server.Transfer和Response.Redirect区别

根本上,Response是叫浏览器去重新转向到指定的网页,而Server自然是发生在服务器端为主了,因此会有以下区别: 1. Server.Transfer只能够转跳到本地虚拟目录指定的页面,而Response.Redirect则十分灵活:2. Server.Transfer可以将页面参数方便传递到指定页面:3. 使用时,Server.Transfer跳到别的页面后,浏览器显示的地址不会改变,有时反而会造成误会,当然也有些场合需要这样的效果:4. Server.Transfer可以减少客户端对服

Response.Redirect()、Server.Execute和Server.Transfer的区别

1.Response.Redirect(): Response.Redirect方法导致浏览器链接到一个指定的URL. 当Response.Redirect()方法被调用时,它会创建一个应答,应答头中指出了状态代  码302(表示目标已经改变)以及新的目标URL.浏览器从服务器收到该应答,利用应答头中的信息发出一个对新URL的请求. 这就是说, 使用Response.Redirect方法时重定向操作发生在客户端,总共涉及到两次与服务器的通信(两个来回):第一次是对原始页面 的请求,得到一个302