日期:2014-05-17  浏览次数:20761 次

关于Server.Transfer和Response.Redirect的不同?

   public partial class WebForm1 : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            Server.Transfer("WebForm2.aspx?id=1");
        }
    }

   public partial class WebForm2 : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            string a = Request.QueryString["id"].ToString();
        }
    }


使用Server.Transfer后,跳转到WEBFORM2,URL没改变,仍然是WEBFORM1.ASPX..并且能获取到QUERYSTRING的值

但如果使用Response.Redirect后,URL发生了改变,同时也能获取QUERYSTRING的值。。

两者到底有什么不同?仅仅只是URL的差别吗?求各位详细解释下。。
Webform URL

------解决方案--------------------
你想想看,我们要传输一个对象(比如一个很大的DataSet)到另外一个页面去,怎么办?不用Session。这时我们就可以用Server.Transfer方法,直接在另外一个页面引用这个DataSet。
另外,你参考一下:http://msdn.microsoft.com/en-us/library/aa711564,这里面说的大概意思是Redirect要在客户端浏览器中重新定向到新的url,又多了一次请求响应的过程,用户体验不好。而Transfer是直接在服务端传递的,并不需要刷新客户端浏览器的url。