在ASP.NET中,在后台传值方式可以采用 Response.Redirect(“path”) 来重定向页面的,也可以采用Server.Transfer(“path”) 来重定向地址,那么这两者有何不同呢,一起来学习一下;
1、Response.Redirect()
Response.Redirect方法是简单地发送一条消息到浏览器,告诉浏览器定位到另一个页面,浏览器链接到一个指定的URL,当Response.Redirect()方法被调用时,它会创建一个应答,应答中指出了状态代码302(表示当前目标已经改变)及新目标URL,浏览器从服务器收到该应答,利用应答头中的信息发出一个对新URL的请求;
这就是说,使用Response.Redirect方法时重定向操作发生在客户端,总共涉及到两次与服务器的通信(两个来回):第一次是对原始页面的请求,得到一个302应答,第二次是请求302应答中声明的新页面,得到重定向之后的页面;
- 代码应用
//两种方式
Response.Redirect("Error.html");
Response.Redirect("http://www.baidu.com/")
2、Server.transfer()
当使用 Server.Transfer 方法重定向页面时,虽然页面也会被重定向至指定页,但是并不会在浏览器的URL上体现出来,并且若重定向的页面后有参数,也不会显示在浏览器的URL上;
- 应用:
File1.asp:
<%response.write("Line 1 in File 1<br>")
Server.Transfer("file2.html")
response.write("Line 2 in File 1<br>")%>
File2.asp:
<%response.write("Line 1 in File 2<br>")
response.write("Line 2 in File 2<br>")%>
输出:
Line 1 in File 1
Line 1 in File 2
Line 2 in File 2
跳转的目标页应是同一Web窗体页(.aspx页),转移到一个asp或asmx页面是无效的;
3、区别:
- Response是浏览器重新跳转到指定网页,增加一次往返,server是发生在服务器端为主效率较高;
- Server.transfer只能跳转到本地虚拟目录指定的页面,而Response.Redirect相对灵活;
- Server.transfer跳转到其他页面浏览器显示地址不变,Response.Redirect跳转时浏览器地址变化
简单来看就是Response.redirect跳转的页面的时候地址栏会发生变化,而Server.Transfer在进行页面跳转的同时将页面的控制权进行交接,网页地址栏不变;Transfer 方法是 Response.Redirect 的一个高效的替代方案,当 Server.Transfer 方法在服务器上向另外的 ASP 页面传输执行时,重定向强制 Web 服务器处理额外的请求,避免了额外的周折;