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";在客户端防止再次提交

  • 相关阅读:
    Html列表分页算法
    .Net分布式锁
    Net中的常见的关键字
    C# 操作windows服务[启动、停止、卸载、安装]
    虚拟机设置静态IP与配置网络
    WebService服务介绍与调用
    StackService.Redis 应用
    Centos+Redis 集群
    浏览器LocalStroage使用
    WCF与WebService的区别(转)
  • 原文地址:https://www.cnblogs.com/tiancai/p/3534655.html
Copyright © 2011-2022 走看看