[已解决问题] 关于server.Transfer
提问时间: 2008-04-28 14:39
悬赏分:100 浏览:196 次

我有3个画面

WebForm1,WebForm2,WebForm3

如果我使用server.Transfer的方式迁移画面

例如

在WebForm1里增加一个button

Server.Transfer("WebForm2.aspx")

在WebForm2里也增加一个button

Server.Transfer("WebForm3.aspx")

 

按照微软的帮助提示,这两次迁移的过程中是不是地址栏的url应该保持不变,但是实际的情况是除了启动画面以外每次迁移都表示上个画面的地址信息。换句话说就是点击WebForm2.aspx中的按钮向WebForm3.aspx迁移后,地址栏的内容就变成了

http://localhost:1578/ServerTransfer/WebForm2.aspx

请问这是为什么呢,先谢谢大家


提问者:姜翊华 - 初学一级
最佳答案
对了这个Server.Transfer(),它对于当前请求,终止当前页的执行,并使用指向一个新页的指定 URL 路径来开始执行此新页。 
但是新页执行过后,当前页面的地址栏中虽然仍然是原来的地址,但内容已经是新的页面的内容了,地址栏的地址只能称为”伪地址",当前的真正地址现在已经是新页面的地址了。说的有点绕嘴,不知楼主理解没有?所以在点击WebForm2中的button时,它转向了webForm3,它终止webForm2的执行,指向webForm3页面,显示原来页面的地址WebForm2.aspx。

提个建议:不要轻易使用这个东东,Server.Transfer()执行的时候不去验证新的页面的授权,也就是说,当前用户只要有权访问当前页面,它并不去验证对新页面是否有权限访问,直接执行新的页面。所以当涉及到权限问题时,一定要注意哦
2008/4/28 15:50:38 回答者:任力


提问者对于答案的评价:非常感谢回答,看来只有使用response.redirect
其它回答(2)
实践总是对的,Transfer只是保证地址栏显示的URL为调用Transfer的页面的URL,而不能保证地址栏一直不变化
想实现地址栏不变化,只能使用frameset了
2周前   回答者:丁学 - 老鸟四级
是的就是这样的.执行Server.Transfer()后,执行流程转入另一个aspx页面,但新的aspx页面仍使用前一aspx页面创建的应答流。
1.你在WebForm1中点击button转到WebForm2.应答流为WebForm1.地址栏中显示为WebForm1的地址.内容为WebForm2.
2.你在WebForm2中点击了button转到了WebForm3当前应答流应该为WebForm2. 地址栏中就是WebForm2的地址,尽管页面信息是WebForm3的内容.
2周前   回答者:侯垒 - 小虾三级
评论
   您需要登录以后才能回答!
我的问题    我要提问


快到期问题

> 问题排行榜

有不合适内容,建议去除