zoukankan      html  css  js  c++  java
  • .NET防止重复提交数据

    最近在做一个销售系统的时候,操作人员提交数据的时候数据库竟然会出现多条数据相同的记录,并且是在1秒之内,客户反馈给我们,第一反应是重复提交的问题,检查了下代码,程序执行完成后应该是跳转到别的页面的,可为什么执行了第一次后没有跳转呢? 并且系统的提交按钮提交后 会confirm 确认 后 disabled=“true”的,难道是confirm验证没有执行? 由于不能和客户直接沟通,也不得而知,但是在以后编写程序时要注意重复提交的问题,有如下方法

    1.页面第一次加载到时候生成一个令牌, 提交数据的时候检测令牌状态 在程序执行完以后将令牌清空

      protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                ViewState["istj"] = "0";
            }

            if (ViewState["istj"] != null)
            {

                Response.Write(ViewState["istj"].ToString());
            }
            else
            {
                Response.Write("为null");
            }
        }
     
        protected void Button2_Click(object sender, EventArgs e)
        {

     //执行程序
            ViewState["istj"] = null;
        }

    2.第一次加载页面的时候生成数据库唯一标识

     protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                ViewState["istj"] =  DateTime.Now.ToString("yyyyMMddhhmmss") + "唯一标识";

            //或者 label.text= DateTime.Now.ToString("yyyyMMddhhmmss") + "唯一标识";
            }

            if (ViewState["istj"] != null)
            {

                Response.Write(ViewState["istj"].ToString());
            }
            else
            {
                Response.Write("为null");
            }
        }
     
        protected void Button2_Click(object sender, EventArgs e)
        { //执行程序

         //首先检测 是否重复提交

        //检测该唯一标识数据库里是否存在
            ViewState["istj"] = null;//销毁标识

       
        }

    注:按钮提交后必须要disabled="true";在客户端防止再次提交

  • 相关阅读:
    Elasticsearch 索引操作
    windows curl命令
    Elasticsearch简介
    ElasticSearch插件安装
    SignalR实时聊天功能
    原来现在很多人都用SignalR来实现Chat Room
    设计模式(六)(Command Pattern)命令模式
    FtpWebRequest FTP异步下载、异步上传文件
    FTP规范
    oracle组建:ODAC112021Xcopy_x64,在开发机上,不用安装oracle的客户端等开发
  • 原文地址:https://www.cnblogs.com/tiancai/p/3534655.html
Copyright © 2011-2022 走看看