Response.Redirect - 在重定向之前回复自我?

时间:2010-02-10 17:32:48

标签: asp.net postback response.redirect

在实际重定向之前,Response.Redirect第一次PostBack是否正在调用重定向的页面?我不这么认为,但我的调试显示它是。

我可以看到它这样做,这导致我的问题。问题是:

  1. 我的页面上有一个asp.net按钮。
  2. 单击该按钮时,该页面当然会回发。然后在该按钮的事件处理程序方法中调用以下内容:

    Response.Redirect("Checkout?frpp=1"), true);
    
  3. 但我注意到,当调用重定向时,它会首先返回并点击此页面的页面加载,即正在进行重定向的页面。好吧,这导致我的问题,因为它调用代码,我不希望它再次调用,如:

    if(!IsPostBackl)     ShowOrderItems();

  4. 所以这就像我在做第二次PostBack:

    1. 当您单击按钮,点击事件处理程序,运行调用Redirect的处理程序方法时,会发生第一个PostBack。
    2. Redirect被调用,但它正在另一个PostBack到同一页面这里..为什么?那可能吗?

2 个答案:

答案 0 :(得分:3)

  

Response.Redirect不会导致 PostBack - 它会发出 HTTP 302 response ,这会导致浏览器发出请求到新的网址。

Response.Redirect确实完成当前函数并调用它所在的堆栈 - 它不会自动中止当前线程。也许这就是你所看到的?

答案 1 :(得分:2)

这就是ASP.Net按钮的工作方式。他们回发了这个页面。当发生这种情况时,页面加载事件首先运行(实际上,一些内部框架内容,然后是页面init,然后是页面加载)。在此之后,您的按钮单击处理程序将运行。

在我看来,您已回答了自己的问题 - “if (!IsPostBack)”是用来跳过在帖子上运行页面加载代码的事情。