我们在新增后,如果页面没有转走,手动刷新或重复点击按钮,都可能导致重复插入记录到数据库,特别是在网速很慢时,点了新增后没反映,多数人都会再点一次,或刷新页面,结果就插入了多条相同的记录.
以下代码可以解决以上问题,以前我在写asp时也是这样实现的,基本上转成.net后,还是一样的代码.
首先我们需要在aspx的form中加入一个隐藏表单:
<
input
type
=hidden
name
=formid
value
='<%=DateTime.Now
%
>
' />
然后在aspx.cs中的新增按钮的处理代码之前加入以下代码:
protected
void
btn_Add_Click(
object
sender, EventArgs e)
![](https://i-blog.csdnimg.cn/blog_migrate/a41954a27d6ad96fa2c2cf816e677448.gif)
...
{
//以下代码可以保证新增后右键刷新将不会重复插入记录.
string formid = HttpContext.Current.Request["formid"];
if (formid == null)
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
Response.Write("提示:表单没有指定formID");
Response.End();
}
else
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
if (Session["formID"] == null)
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
Session["formID"] = formid;
}
else
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
if (Session["formID"].ToString() == formid.ToString())
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
Response.Write("<font color=red>:" + formid + "此表单已经提交到服务器,请不要重复提交或刷新。</font><a href="javascript:window.location=window.location">返回表单!</a>");
Response.End();
}
else
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
Session["formID"] = formid;
}
}
}
//----------------以下写新增插入代码
}