1、页面的类作如下的定义:
//定义静态成员变量 static bool UpData;
2、页面载入事件:
protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { //如果是页面第一次载入就将UpData设为false UpData = false; } }
3、提交按钮事件:
protected void Button1_Click(object sender, EventArgs e) { //如果页面已经提交过(UpData为true)就不进行任何操作,直接返回 if(UpData)return; //这里书写表单验证及写入数据库的代码 //表单验证成功并提交到数据库之后将UpData设为true UpData=true; //这里书写转往其他页面或进行后续处理的代码 }
这样用户只要成功提交之后,在提交过程中刷新页面或是提交一次后按后退按钮都不能再反复提交了。
问题:
当用户同时打开两页相同页面时,提交了其中一个之后,再去提交另一个时提交就无效了,目前尚不确知当N个用户先后连接服务器打开同一页面之后,一个用户提交后其他用户是否还能正确提交,但鉴于ASP.net的表单提交事件机制,又不得不使用静态变量来存储(动态变量会在提交表单的事件执行前重置),大家如有更好的实现方法,欢迎分享出来,共同学习与交流。