刷新一次,就插入一次数据 怎么防止?

红头发疯疯 2012-04-07 05:11:13
我是通过按钮来插入数据的


    protected void Button1_Click1(object sender, EventArgs e)
{

if (TextBox1.Text != "" && TextBox2.Text != "")
{
if (SqlStore.insert_youqing(TextBox1.Text, TextBox2.Text) == 0)
{
GridView1.DataBind();
TextBox1.Text = "";
TextBox2.Text = "";
}
}

}


用IsPostBack该怎么写?

或者是别的方法?
...全文
232 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
红头发疯疯 2012-04-07
  • 打赏
  • 举报
回复
受教了~~ 谢谢
[Quote=引用 7 楼 的回复:]

引用 3 楼 的回复:

我是在最后判断里 if (SqlStore.insert_youqing(TextBox1.Text, TextBox2.Text) == 0)
{
GridView1.DataBind();
TextBox1.Text = "";
TextBox2.Text = ""……


大多数时候,你先把用户最后一次提交的两个值读出来,判断一下TextBox……
[/Quote]
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]

我是在最后判断里 if (SqlStore.insert_youqing(TextBox1.Text, TextBox2.Text) == 0)
{
GridView1.DataBind();
TextBox1.Text = "";
TextBox2.Text = ""……
[/Quote]

大多数时候,你先把用户最后一次提交的两个值读出来,判断一下TextBox1.Text、TextBox2.Text是否与上一次是否重复,这就足够满足业务需要了。
  • 打赏
  • 举报
回复
很多时候,重复提交根本不是什么“刷新”操作。

例如这个csdn的“提交回复”操作,当页面出问题的时候,就完全可能重复提交。即时什么把按钮临时改为“不可用”,也是有可能被重复提交内容的。

实际上,当你的asp.net程序刷新实在是太慢,用户体验实在是太糟糕,用户就会进行任何可能的操作。重复提交在所难免。此时首先要从后台数据处理流程上去把握,而不要纠缠在“想办法让客户端不会重复刷新”这类问题上。

例如对于csdn,当5分钟之类,一个用户重复提交了一模一样的内容,那么后台数据处理程序就可以直接判断出是重复提交了。而用不先去花精力去试验很多不是核心的流程,那种修改什么“按钮失效、页面重定向”之类的东西。
  • 打赏
  • 举报
回复
从“技术”上是不可能“防止”的。因为“刷新”操作是许多浏览器的特性,都是可以重复提交前一个请求。

要想防止,那么你要在数据处理业务逻辑上去防止。也就是说接受“客户端会重复提交数据”的这个事实,然后用后台数据处理流程来防止。

例如在聊天中,假设一个人刚刚已经在邀请另外一个人了,那么重复发送邀请时你要么就忽略它,要么就告诉用户“已经邀请过了”这就行了,而不用真的发出两次邀请。

只有很少的情况下,简单的业务逻辑判断可能不足,那么你可以写一个“时间戳”标记。例如你可以每一次输出界面时先在ViewState中记录一个随机编号,然后把它记录到后台文件或者数据库中。然后在SqlStore.insert_youqing执行之前,首先核对ViewState中的标记跟数据库中的标记是否一致,不一致就说明用户很可能是使用“刷新”来提交的。

最后要知道,假设你使用UpdatePanel控件,完全可以避免“刷新”时重复提交的问题。
Im_Sorry 2012-04-07
  • 打赏
  • 举报
回复
用AJAX,或者你自己提交后禁用按钮,或者提交成功跳转到别的页面,或者是提交后清空输入内容。
红头发疯疯 2012-04-07
  • 打赏
  • 举报
回复
我是在最后判断里 if (SqlStore.insert_youqing(TextBox1.Text, TextBox2.Text) == 0)
{
GridView1.DataBind();
TextBox1.Text = "";
TextBox2.Text = "";
Response.Redirect("youqing.aspx");//跳转一次 才防止刷新一次页面,插入一次数据的
}
红头发疯疯 2012-04-07
  • 打赏
  • 举报
回复
防止刷新一次 重复插入一次数据
烟波钓 2012-04-07
  • 打赏
  • 举报
回复
没明白 您是啥问题 也没明白您想干啥了

62,268

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧