if(!this.IsPostBack)
//如果是刷新,则IsPostBack==false
//如果是通过按钮等服务器控件激发的IsPostBack==true

解决方案 »

  1.   

    问题2:
    如何处理用户按F5刷新?
    发现用户按F5,由于页面存在数据库操作,所以会提示什么不重新发送消息页面 无法刷新页面。
    更为严重的问题是:
    我有两个页面处理订单,第一个页面是下定单,而第二个页面是显示成功下订单后的订单信息
    两个页面之间是采用Server.Transfer()的方法来传递信息的。
    其中第二个页面的page_load是这样处理的:
    if(!IsPostBack)
    {
      // 在此处放置用户代码以初始化页面
      OrderForm1 PrevPage=(OrderForm1)(Context.Handler);
      this.OrderMainId=PrevPage.OrderMainId;
      ViewState.Add("OrderMainId",this.OrderMainId);
     }
    else
      this.OrderMainId=(int)ViewState["OrderMainId"];然后,就根据取得的OrderMainId来读取信息。
    当按F5的时候,不仅出现刚才的情况,更甚的是另外开了一张新的订单!
    也就是说页面1的提交事件又执行了一遍!
    这是为什么呢?如何解决?
      

  2.   

    IsPostBack=false,只发生在页面第一次进入时;
    页面再次装载时,都会重新调用page_load(),此时ispostback=true
      

  3.   

    wacle说的好像尚未能解释问题1的情况
    即使对于问题2可以解释为什么用户按F5会执行if(!IsPostBack)那一段
    但是也不能解释为何会返回执行第一个页面的提交按钮的事件啊?
      

  4.   

    提交以后用这个方法
    Response.AddHeader("refresh" ,("0;url=" + Request.Url.AbsoluteUri));
      

  5.   

    楼上的语句是什么意思?
    是放在Server.Transfer();之前?
    为什么asp.net会出现这种情况?
      

  6.   

    Response.AddHeader("refresh" ,("0;url=" + Request.Url.AbsoluteUri));
    这个东西只会闪一下就跑回第一个页面了
      

  7.   

    不是啊
    是第一个页面的提交按钮btncommit的onclick事件里面入库,然后就Server.Transfer;
    //OrderForm1.aspx.cs
    private void Button1_Click(object sender, System.EventArgs e)
    {//下定单、数据库操作
    ...
    //转页面2
    Server.Transfer("OrderForm2.aspx");
    }
    如果这样的话就会出现刚才的情况
    如果在
    //OrderForm1.aspx.cs
    private void Button1_Click(object sender, System.EventArgs e)
    {//下定单、数据库操作
    ...
    //转页面2
    Response.AddHeader("refresh" ,("0;url=" + Request.Url.AbsoluteUri));
    Server.Transfer("OrderForm2.aspx");
    }
    那么就不会显示页面2,只是闪一下就跑回页面1
      

  8.   

    这样啊,那就用Response.Redirect("OrderForm2.aspx")就行了
      

  9.   

    就是说用redirect取代transfer?
    那么addheader还要不要?
      

  10.   

    忘了,要加个参数,Response.Redirect("OrderForm2.aspx",true)
      

  11.   

    一样
    Server.Transfer("OrderForm2.aspx",true);
      

  12.   

    谢谢imfine
    我现在使用的是
    Response.AddHeader("refresh" ,("0;url=" + Request.Url.AbsoluteUri));
    Response.Redirect("OrderForm2.aspx");
    可以达到我的要求。你说的其他方式我还没有试,明天再试。
    另外经过测试发现Page_Load是先执行的,也就是按钮的onclick事件执行之前先执行Page_Load,所以导致问题1的出现。