Server.Transfer 和Response.Redirect 比较

作者:卡尔·穆尔
原著:Developer.com
翻译:陈梦
如果你读过很多行业杂志和 ASP.NET 示例,你会发现,大多数人使用 Response.Redirect 将用户引导到另一个页面,而另一些人好像偏爱于神秘的 Server.Transfer,那么,这二者有什么区别?

Response.Redirect 简单地发送一条消息到浏览器,告诉浏览器定位到另一个页面。你可以使用下面的代码将用户引导到另一个页面:
Response.Redirect("WebForm2.aspx")
或者
Response.Redirect("http://www.karlmoore.com/")

Server.Transfer 也是通过一条语句将用户引导到另一页面,比如:Server.Transfer("WebForm2.aspx")。不过,这条语句有一系列独特的优缺点。

首先,通过 Server.Transfer 引导到另一页面保留服务器资源,通过更改服务器端“焦点”和传输请求来代替告诉浏览器重定向,这就意味着你不会占用较多的 HTTP 请求,因此这可以减轻服务器的压力,使你的服务器运行更快。

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

其次,Server.Transfer 保留浏览器端的 URL 地址。这对流线型的数据输入很有帮助,不过这也增加了调试的复杂度。

还有: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 值时会发生错误。请参见:http://support.microsoft.com/default.aspx?id=kb;en-us;Q316920

非官方的解决办法是在你要传递的目的页面中设置 enableViewStateMac 属性为 True,然后再将其设置回 False。这说明你需要使用 enableViewStateMac 的 False 值才能解决这个问题。

总结:Response.Redirect 简单地告诉浏览器访问另一个页面。Server.Transfer 有利于减少服务器请求,保持地址栏 URL 不变,允许你将 query string 和 form 变量传递到另一个页面(有一点小小的缺陷)。

重要提示:不要混淆了 Server.Transfer 和 Server.Execute,Server.Execute 执行一个页面,并返回结果,在过去 Server.Execute 很有用,不过在 ASP.NET 里,它被 fresher 方法所代替,所以忽略 Server.Execute。

转载于:https://www.cnblogs.com/dazhong/archive/2007/04/08/705049.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/497147.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C++学习之路 | PTA(天梯赛)—— L2-010 排座位 (25分)(带注释)(并查集)(精简)

L2-010 排座位 (25分) 布置宴席最微妙的事情,就是给前来参宴的各位宾客安排座位。无论如何,总不能把两个死对头排到同一张宴会桌旁!这个艰巨任务现在就交给你,对任何一对客人,请编写程序告诉主人他们是否能被安排同席。…

波士顿动力新年视频第一发,机器人狗能为朋友开门了!

来源:36氪概要:波士顿动力公司的那只黄色机器人狗SpotMini,你还记得吗?波士顿动力公司的那只黄色机器人狗SpotMini,你还记得吗?它上一次亮相是在去年11月,当时它还在一片后院的草地上恣意奔跑。…

Template Method 和 Strategy 模式

Template Method 和 Strategy 模式

Makefile详解——从入门到精通

转自ChinaUnix,作者gunguymadman,陈皓。链接地址:http://www.chinaunix.net/jh/23/408225.html 陈皓 CSDN 博客:http://blog.csdn.net/haoel/article/details/2886 http://blog.csdn.net/ruglcc/article/details/7814546 写的相…

实现了HTTP多线程下载

不是使用每连接一线程的技术,而是使用多路复用技术。作了一个分配算法。第一个HTTP Request返回取得ContentLength之后,如果使用多个连接下载,则需要一个分配算法,分配每个Request所对应的Range。分配的部分可能是一个连续的块&am…

C++学习之路 | PTA(天梯赛)—— L2-007 家庭房产 (25分)(带注释)(并查集)(精简)

L2-007 家庭房产 (25分) 给定每个人的家庭成员和其自己名下的房产,请你统计出每个家庭的人口数、人均房产面积及房产套数。 输入格式: 输入第一行给出一个正整数N(≤1000),随后N行,每行按下列格式给出一个…

是时候不把智能手机叫做电话了:移动AI时代来临!

来源:EET电子工程专辑概要:全新的iPhone X集成了用于人脸识别的神经引擎,但这仅仅是一个开始。全新的iPhone X集成了用于人脸识别的神经引擎,但这仅仅是一个开始。嵌入式神经引擎和专用智能处理器在边缘设备上实现了人工智能(AI)&…

C#中MSMQ消息队列测试疑问

今天我通过C#程序向某台机器发送MQ消息队列,并且已经将目标机器的消息队列设置消息存储限额无限制.我持续的把消息发送到目标机器上,发现只能发送1000条消息,其他的消息无法接收到!!!于是我尝试通过程序把消息队列的一些消息删除掉,最后发现消息队列又多了起来,但是到1000条的时…

Facade 和 Mediator 模式

Facade 和 Mediator 模式

C++学习之路 | PTA(甲级)—— 1114 Family Property (25分)(带注释)(并查集)(精简)

1114 Family Property (25分) This time, you are supposed to help us collect the data for family-owned property. Given each person’s family members, and the estate(房产)info under his/her own name, we need to know the size of each fami…

拥抱AI大趋势,ARM发布两款AI芯片架构

来源:量子位概要:ARM发布了两款针对移动终端的AI芯片架构,物体检测(Object Detection,简称OD)处理器和机器学习(Machine Learning,简称ML)处理器。今天,ARM发…

Ubuntu 安装 mysql、sqlite3、postgresql

NAVICAT 官网:http://www.navicat.com.cn/products NAVICAT16 PREMIUM NAVICAT16 :http://zzzzzz.me/post-73329.html Xmanager :https://www.xshellcn.com/ 1、Ubuntu 安装 mysql ubuntu上安装MySQL非常简单只需要几条命令就可以完成。 1…

牡丹园

其实从少林寺去洛阳非常近,当时想赶当天晚上的火车去另一个地方,所以从少林寺又回到郑州火车站,结果没有票,于是取消了。决定在郑州住一晚第二天去洛阳。 看到洛阳路边隔断种的都是这种植物,星星点点很是好看&#xff…

Singleton 和 Monostate 模式

Singleton 和 Monostate 模式 怎样才能使得两个实例表现得像一个对象呢?很简单,只要把所有的变量都变成静态变量即可。 public class Monostate {private static int itsX 0;public Monostate() {}public void setX(final int x) {itsX x;}public int…

十张图看懂未来大数据世界

作者:薄云借智来源:钱塘江大数据随着互联网云时代的来临,大数据与云计算就像一个硬币的正反两面,势必会影响到社会生活的方方面面,改变我们现有的规则和秩序。伴随着大数据与云计算产业的不断发展,未来到底…

MediaWiki初探:安装及使用入门

来源:http://blog.csdn.net/wangnan537/article/details/37743497 MediaWiki是著名的开源wiki引擎,全球最大的wiki项目维基百科(百科词条协作系统)是使用MediaWiki的成功范例,MediaWiki的最大作用在于对知识的归档,可用于构建企业…

科学释梦——意识窗口在记忆模块间的穿越

作者:谢平 中国科学院大学教授 唐代诗人李白曾说,“浮生若梦,为欢几何”,将人生喻为短暂的梦幻。有些人生如梦,有些梦若人生,还有梦想人生......梦——五彩缤纷,诡异神奇,我们每晚都…

asp.net 一个简易权限的小例子设计

asp.net 一个简易权限的小例子设计 近日在阅读一本asp.net的书时(国人写的),其中提到了一个简易权限的小例子,感觉说的还是比较清楚,有点代表性,故在此简单介绍下其实现原理其核心是建立起用户、角色&#…

linux 内核与用户空间通信之netlink使用方法

Linux中的进程间通信机制源自于Unix平台上的进程通信机制。Unix的两大分支AT&T Unix和BSD Unix在进程通信实现机制上的各有所不同,前者形成了运行在单个计算机上的System V IPC,后者则实现了基于socket的进程间通信机制。同时Linux也遵循IEEE制定的P…