zoukankan      html  css  js  c++  java
  • Asp.Net防止刷新重复提交数据(小记)

    网上最多的解决此类问题的方法就是不保存缓存,即提交后表单上的数据不会被浏览器的缓存保存,如果此时再遇到刷新或者后退请求时,就会显示“网页已过期”,数据也就不会重复提交了,这就起到了阻止刷新重复提交的效果。

    下面以简单的提交一篇帖子为例,介绍禁用缓存防止刷新重复提交的方法,表单数据包括“标题”和“正文”两个部分。

    以下是该方法的代码(post.aspx):

    //页面加载

    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() == "")

        //ShowMsg是用来显示提示信息的

        ShowMsg.Text = " * 标题不能为空!";

      else if (txtText.Text.ToString().Trim() == "")

        ShowMsg.Text = " * 内容不能为空!";

      else

      {

        //这里是将数据提交到数据库中,省略

        

        //提交成功后,设“Session["IsSubmit"]”为true

        Session["IsSubmit"] = true;

        //强制转换页面(不可少,否则刷新仍会重复提交,仍转到本页),

        通过页面的转换将缓存中的提交的数据都释放了,即提交的标单数据不会被保存到缓存里,

        如果后退的话,将会出现该页无法显示

        Response.Redirect("post.aspx");

      }

    }

  • 相关阅读:
    Tencent 闲聊对话机器人接口调用,画像:设计员小白
    logging模块简介python
    jieba分词的几种形式
    h5py这个坑-PyCharm Process finished with exit code -1073741819 (0xC0000005)
    python之six模块的用法six.py2 six.py3
    Swoole从入门到入土(8)——协程初探
    Swoole从入门到入土(7)——TCP服务器[大杂烩]
    Swoole从入门到入土(6)——TCP服务器[粘包]
    Swoole从入门到入土(5)——TCP服务器[异步任务]
    Swoole从入门到入土(4)——TCP服务器[正确重启]
  • 原文地址:https://www.cnblogs.com/wjmo520/p/2741554.html
Copyright © 2011-2022 走看看