ASP.net重复提交解决方法

 一、提交的内容在当前页面中处理,防止刷新当前页面再次提交
protected void ImageButton1_Click(object sender, ImageClickEventArgs e)
    {
        AdoSql AddComent = new AdoSql();
        AddComent.Add_Input_Coment(this.GetNewsID(), this.TextBox3.Text, this.TextBox1.Text, this.TextBox2.Text);
        //防止刷新页面时候的回发问题
        int iResult;
        int iUp = 1000;
        Random ro = new Random();
        iResult = ro.Next(iUp);
        string url = "read_news.aspx?n_id="+Request.QueryString["n_id"];
        url = url +"&r=" + iResult.ToString();
        Response.Redirect(url);
    }

二、转向到新页面,后退重复提交的处理。
1、设置页面无缓存
protected void Page_Load(object sender, EventArgs e)
    {
        //设置页面无缓存,设置页面无效
        Response.Cache.SetNoStore();
    }
protected void btn_Reg_Click(object sender, EventArgs e)
{
省略.......
  try
        {
            usi.Persist(t);
            t.Commit();
            CommonHelper.DoUpAlert(this.Page, "成功!");
            Response.Write("<script   language=javascript>window.location.href=window.location.href;</script>");  
            Response.Redirect("~/index.aspx");
        }
        catch (Exception ex)
        {
            t.Rollback();
            CommonHelper.DoUpAlert(this.Page, "失败!");
        }

}

2、
//页面加载
protected void Page_Load(object sender, EventArgs e)
{
   //可以在页面加载时设置页面的缓存为“SetNoStore()”,即无缓存
   Response.Cache.SetNoStore();
   //Session中存储的变量“IsSubmit”是标记是否提交成功的
   if ((bool)Session["IsSubmit"])
   {
     //如果表单数据提交成功,就设“Session["IsSubmit"]”为false
     Session["IsSubmit"] = false;
     //显示提交成功信息
     ShowMsg.Text = " * 提交成功!";
   }
   else
     //否则的话(没有提交,或者是页面刷新),不显示任何信息
     ShowMsg.Text = "";
}
//提交按钮(btnOK)单击事件
protected void btnOK_Click(object sender, EventArgs e)
{
   if (txtTitle.Text.ToString().Trim() == "") ........
     else if (txtText.Text.ToString().Trim() == "") .......
      else
   {
     //这里是将数据提交到数据库中,省略
     /*
     string sql = "insert into tab...values(...)";
     MyConn.ExecQuery(sql);
     */
     //提交成功后,设“Session["IsSubmit"]”为true
     Session["IsSubmit"] = true;
     //强制转换页面(不可少,否则刷新仍会重复提交,仍转到本页),
     //通过页面的转换将缓存中的提交的数据都释放了,即提交的标单数据不会被保存到缓存里,
    // 如果后退的话,将会出现该页无法显示
     Response.Redirect("post.aspx");
  }
}

posted @ 2007-07-31 14:50  nestea  阅读(2726)  评论(2编辑  收藏  举报