.net,c#语言开发BS页面,页面重新加载前或跳转前,连续点击提交按钮,造成数据重复输入的问题
.net,c#语言开发BS页面,如何在不能使JS和session,cookie的情况下避免页面重新加载前或跳转前,连续点击提交按钮,造成数据重复输入的问题问题它是在重新加...
.net,c#语言开发BS页面,如何在不能使JS和session,cookie的情况下避免页面重新加载前或跳转前,连续点击提交按钮,造成数据重复输入的问题
问题它是在重新加载之前连续点击提交啊,IsPostBack还没有到再次判断的时候啊。后台已做重复信息验证,后台用的是commandBuilder自动产生的SQL语句,没有存储过程,那个重复提交是在插入数据库前,因为时间很短多条数据同时插入数据库,所以来不及验证啊。 展开
问题它是在重新加载之前连续点击提交啊,IsPostBack还没有到再次判断的时候啊。后台已做重复信息验证,后台用的是commandBuilder自动产生的SQL语句,没有存储过程,那个重复提交是在插入数据库前,因为时间很短多条数据同时插入数据库,所以来不及验证啊。 展开
展开全部
最简单的方法,点击后禁用该按钮直到完成后再恢复
更多追问追答
追问
问题它是在重新加载之前连续点击提交啊,IsPostBack还没有到再次判断的时候啊。后台已做重复信息验证,后台用的是commandBuilder自动产生的SQL语句,没有存储过程,那个重复提交是在插入数据库前,因为时间很短多条数据同时插入数据库,所以来不及验证啊
追答
既然不让用Js,Session 等,加验证码吧,这样提交必须输入验证码就不能重复提交了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2011-04-29
展开全部
if (!IsPostBack)
{
if (!string.IsNullOrEmpty(Request.QueryString["aid"]))
{
hidacceptid.Value = Request.QueryString["aid"].ToString();//健康管理师是选择用户
//txtAccepter.Text = UserRule.GetUserNameById(hidacceptid.Value);
}
Inits();
}
{
if (!string.IsNullOrEmpty(Request.QueryString["aid"]))
{
hidacceptid.Value = Request.QueryString["aid"].ToString();//健康管理师是选择用户
//txtAccepter.Text = UserRule.GetUserNameById(hidacceptid.Value);
}
Inits();
}
更多追问追答
追问
问题它是在重新加载之前连续点击提交啊,IsPostBack还没有到再次判断的时候啊。后台已做重复信息验证,后台用的是commandBuilder自动产生的SQL语句,没有存储过程,那个重复提交是在插入数据库前,因为时间很短多条数据同时插入数据库,所以来不及验证啊
追答
瞎说,不加载完成咋提交
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
最根本的解决方案是使用token
追问
举个例子
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
在页面中添加一个静态字段
比如 private static bool isSubmit = false;
第一次提交的时候,把这个值设置成true,然后每次判断这个字段的值,一个类的静态字段是公共的,不用担心每次回来会改变他的值。
下面简单写一下代码:
比如你提交的方法是下面这个方法:
public void DoSubmit()
{
if (isSubmit)//这里判断是不是正在提交。
return;
isSibmit = true;
//下面做你想做的事情
}
比如 private static bool isSubmit = false;
第一次提交的时候,把这个值设置成true,然后每次判断这个字段的值,一个类的静态字段是公共的,不用担心每次回来会改变他的值。
下面简单写一下代码:
比如你提交的方法是下面这个方法:
public void DoSubmit()
{
if (isSubmit)//这里判断是不是正在提交。
return;
isSibmit = true;
//下面做你想做的事情
}
更多追问追答
追问
我试过了,问题是如果延时在你赋值isSibmit = true;之前怎么办?其他的点击已经进来了
追答
public void DoSubmit()
{
lock(isSubmit)//lock让线程同步
{
if (isSubmit)//这里判断是不是正在提交。
return;
isSibmit = true;
//下面做你想做的事情
}
}
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
在操作数据以前,判断数据是否已经被操作过了
更多追问追答
追问
问题它是在重新加载之前连续点击提交啊,IsPostBack还没有到再次判断的时候啊。后台已做重复信息验证,后台用的是commandBuilder自动产生的SQL语句,没有存储过程,那个重复提交是在插入数据库前,因为时间很短多条数据同时插入数据库,所以来不及验证啊
追答
if()//判断数据是否已经存在或者已经被处理
{
//操作数据库
}
你确定你在页面没有刷新完成的情况下连续点两次按钮会执行两次按钮事件?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询