(1)Response.Redirect简单地发送一条消息到浏览器,告诉浏览器定位到另一个页面。client->server->client->server->client
(2)Server.Transfer也是将用户引导到另外一个页面,并返回客户端。
client->server->server->client
(3)Server.Execute执行一个页面,并返回结果。在asp.net中被Transfer代替
使用Server.Transfer优点:
首先,通过 Server.Transfer 引导到另一页面保留服务器资源,通过更改服务器端"焦点"和传输请求来代替告诉浏览器重定向,这就意味着你不会占用较多的 HTTP 请求,因此这可以减轻服务器的压力,使你的服务器运行更快。不过, "transfer" 只能在同一服务器端的同一站点间运行,所以你不能用 Server.Transfer 将用户重定向到另一服务器上的站点。要重定向到服务器以外的站点,只有 Response.Redirect 能办到。
其次,Server.Transfer 保留浏览器端的 URL 地址。这对流线型的数据输入很有帮助,不过这也增加了调试的复杂度。
其次,Server.Transfer 保留浏览器端的 URL 地址。这对流线型的数据输入很有帮助,不过这也增加了调试的复杂度。
最后,Server.Transfer 方法还有另一个参数——"preserveForm"。假如你设置这个参数为 True,比如:Server.Transfer("WebForm2.aspx", True), 那么 query string 和任何 form 变量都会同时传递到你定位的页面。
例:WebForm1.aspx 有一个文本框名为 TextBox1,你利用 preserveForm 为 True 传递到 WebForm2.aspx,那么在WebForm2.aspx页面可以用 Request.Form("TextBox1") 来取得文本框的值。
例:WebForm1.aspx 有一个文本框名为 TextBox1,你利用 preserveForm 为 True 传递到 WebForm2.aspx,那么在WebForm2.aspx页面可以用 Request.Form("TextBox1") 来取得文本框的值。
这种技术对向导式的多页面输入很有用,不过这里有一个你必须注重的问题是,当你使用 preserveForm 参数时,ASP.NET 有一个 bug,通常情况下,当试图传递 form 或 query string 值时会发生错误。
非官方的解决办法是在传递的目的页面中设置 EnableViewStateMac属性设置为false。
转载于:https://blog.51cto.com/xfqxj/477101