执行以下代码时如果刷新CLICK事件会再次执行!!!请问如何避免网页刷新时再次提交数据呢?谢谢~~ ·_·
protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            Response.Write("第一次\n");
            Session["b"] = "a";
        }
        else
        {
            Response.Write("第二次");
        }    }
    bool flag = false;
    protected void Button1_Click(object sender, EventArgs e)
    {
        Session["b"] += "提交一次";        Response.Write(Session["b"].ToString());        flag = true;
        Show();
        flag = false;
    }
    protected void Show()
    {
        if (flag)
        {
            //Response.Write("操作一次数据库");
            Session["b"] += "插入一次";
        }
    }

解决方案 »

  1.   

    1. 可以把flag放在session中
    2. 执行完click事件处理后,用redirect到本页面
      

  2.   

    事件执行完了后,重新定位下
    response.redirect()
      

  3.   

    1、重定向页面2、存到ViewState里面,然后判断是否已经处理过
      

  4.   

    protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                Response.Write("第一次\n");
                Session["b"] = "a";
            }
            else
            {
                Response.Write("第二次");
            }
        }
        /// <summary>
        /// 提交
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void Button1_Click(object sender, EventArgs e)
        {
            Session["b"] += "提交一次";
            Show();
            Response.Write(Session["b"].ToString());
            Response.Redirect("MainPage.aspx");
        }
        protected void Show()
        {
            string str = File.ReadAllLines(@"F:\TestFile.txt")[0];
            int sss = Convert.ToInt32(str) + 1;
            File.WriteAllText(@"F:\TestFile.txt", sss.ToString());
        }