ASP有三种页面跳转方式,分别是HttpResponse.Redirect, Server.Transfer, Server.Execute ,下面分别说明。
HttpResponse.Redirect
这个跳转页面之方法跳转之速度不快,因为它要走2个来回(2次postback),但他可以跳 转到任何页面,没有站点页面限制(即可以由雅虎跳到新浪),同时不能跳过登录保护。但速度慢是其最大缺陷!Redirect跳转机制:首先是发送一个http请求到客户端,通知需要跳转到新页面,然后客户端在发送跳转请求到服务器端。需要注意之是跳转后内部空间保存之所有数据信息将会丢失,所以需要用到session。
Server.Transfer
速度快,只需要一次postback ,但是。。。。他必须是在同一个站点下,因为它是server之一个方法。另外,他能跳过登录保护。你可以写个小程序试试:设计一个由页面一到页面二之跳转,但要进入到页面二需要登录,form认证,但如果跳转语句使用transfer之话,那就不会弹出登录页面了。这个方法之重定向请求是发生在服务器端,所以浏览器之url地址仍然保留之是原页面之地址!
Sever.Execute
这种页面导航方式类似于针对ASPX页面之一次函数调用,被调用之页面能够访问发出调用页面之表单数据和查询字符串集合,所以要把被调用页面Page指令之EnableViewStateMac属性设置成False。默认情况下,被调用页面之输出追加到当前应答流。但是,Server.Execute方法有一个重载之方法,允许通过一个TextWriter对象(或者它之子对象,例如StringWriter对象)获取被调用页面之输出,而不是直接追加到输出流,这样,在原始页面中可以方便地调整被调用页面输出结果之位置。
server.execute("url") 用户当前环境传递到新网页,在该页面执行完成后,控制传递回原来的页面,并继续执行execute后面的语句.
server.transfer("url")停止当前页面的执行,把控制转道url中指定页面.
与execute方法不同,当新页面执行完成后,不返回原来页面,而是结束执行过程.