代码之家  ›  专栏  ›  技术社区  ›  Abhishek

如何停止刷新页面上的事件

c#
  •  0
  • Abhishek  · 技术社区  · 16 年前

    当用户单击提交按钮时,我将表单数据插入到数据库中。问题是,在原始提交之后,如果用户刷新页面,表单数据将被重新提交,从而第二次插入数据库。我怎样才能解决这个问题?

    3 回复  |  直到 14 年前
        1
  •  0
  •   Thurein    16 年前

    我更喜欢使用以下方法来检测底层请求是否被双重发布。

    private bool refreshState;
    private bool isDoublePosted;
    
    protected bool IsInDoublePosting
    {
        get 
        {
            return isDoublePosted;
        }
    }
    
    protected override void LoadViewState(object savedState)
    {
        object[] states = (object[])savedState;
        base.LoadViewState(states[0]);
        refreshState = Convert.ToBoolean(states[1]);
        isDoublePosted = (refreshState == Convert.ToBoolean(Session["IsInDoublePosting"]));
    }
    
    protected override object SaveViewState()
    {
        Session["IsInDoublePosting"] = refreshState;
        object[] states = new object[3];
        states[0] = base.SaveViewState();
        states[1] = !refreshState;
        return states;
    }
    

    在按钮单击事件处理程序中:

        if (!this.IsInDoublePosting)
        { 
            // your code goes here
        }
    
        2
  •  0
  •   rkellerm    16 年前

        3
  •  0
  •   renjucool    16 年前

    在处理请求后,从服务器端提交按钮事件发出响应。重定向(“yourpage”)