在实际重定向之前,Response.Redirect
第一次PostBack是否正在调用重定向的页面?我不这么认为,但我的调试显示它是。
我可以看到它这样做,这导致我的问题。问题是:
单击该按钮时,该页面当然会回发。然后在该按钮的事件处理程序方法中调用以下内容:
Response.Redirect("Checkout?frpp=1"), true);
但我注意到,当调用重定向时,它会首先返回并点击此页面的页面加载,即正在进行重定向的页面。好吧,这导致我的问题,因为它调用代码,我不希望它再次调用,如:
if(!IsPostBackl) ShowOrderItems();
所以这就像我在做第二次PostBack:
Redirect
的处理程序方法时,会发生第一个PostBack。Redirect
被调用,但它正在另一个PostBack到同一页面这里..为什么?那可能吗?答案 0 :(得分:3)
Response.Redirect
不会导致PostBack
- 它会发出HTTP 302 response
,这会导致浏览器发出请求到新的网址。
Response.Redirect
确实完成当前函数并调用它所在的堆栈 - 它不会自动中止当前线程。也许这就是你所看到的?
答案 1 :(得分:2)
这就是ASP.Net按钮的工作方式。他们回发了这个页面。当发生这种情况时,页面加载事件首先运行(实际上,一些内部框架内容,然后是页面init,然后是页面加载)。在此之后,您的按钮单击处理程序将运行。
在我看来,您已回答了自己的问题 - “if (!IsPostBack)
”是用来跳过在帖子上运行页面加载代码的事情。