也说页面重定向

      一、Redirect和Transfer
      在ASP.NET中,我想很多人在重定向页面的时候都是用Response.Redirect("test.aspx");而在MSDN的教程中也是如此。现在就了解一下在调用Redirect()时到底做了什么?!
     当调用Redirect()时,服务端会给客户端的浏览器发个消息告诉它“我现在要转到其它页面了”,浏览器收到消息(请求)后,马上服从命令,给服务器返回一个确认消息,请求服务器把当前这个页面定位到新页面。

      Server  发送请求 >   Client   收到信息确认返回  > Server 请求重定向 > test.aspx

由此看出,仅仅重定向一个新页面,就在后台做了此许多事,来来回回的两次Server动作,为什么要这么麻烦呢,这样做效率又低,又占网络资源(当网络慢时会显得更加慢,此时对于不是必需看的信息我会毫不犹豫地close掉 (^_^) ) 。为什么不直接在Server端进行重定向动作呢。很荣幸,MS提供了个Server.Transfer("test.aspx"),它的一切动作都在Server端进行,所以相对而言,它的重定向速度比前都要快得多。它有两个参数,一个为重定向页面,一个为布尔值(用来指定是否保存原页面表单的信息)。它仅仅在重定向的时候带了一个状态信息,也就是用ViewState保存了重定向前的页面的信息.因此可以把它理解为一个“假象”,也就是页面上显示的是重定向后的页面,但原来页面的信息却还在ViewState(查看源代码时,有时会看到一堆密密麻麻的字符,就是它了)。
     可以这样在新页面中取得原页面中某个文本框的值:

   
None.gif   Server.Transfer( " test.aspx " , true );
None.gif  Request.Form(
" UserName " );  // 此处的UserName为文本框的id.
None.gif

    世界没有完美的东西:
    1. Server.Transfer(),只能重定向到网站本身的页面,无法重定向到其它网站,而Redirect则可以,如Response.Redirect( http://www.cnblogs.com") 
    2.在使用了Transfer的第二个可选参数后,执行的时候可能会报出“无效的ViewState..."这样的错误,解决方法参见: http://support.microsoft.com/default.aspx?id=kb;en-us;Q316920

       二、Transfer和Execute
       在ASP时代有这么个东东Server.Execute(),也用来重定向页面,这个东东我看很多web开发人员都不再用了吧(^_^),它的作用只是执行完新页面的结果后又返回到原页面,如下:
      页面1 Server.Execute("页面2")  > 返回页面2的结果 ,再返回到页面1,最终页面是停留在页面1,而不是在页面2.
       以上主要是对Redirect和Transfer用法和效率的讨论。
                  
                                                                                                      By  Jabby随手小记
                                                                                                   2005年4月18日23:03:36

转载于:https://www.cnblogs.com/jabby12/archive/2005/04/18/140052.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值