避免页面重复提交

最近考虑了一个问题:假设当前一个用户在留言本提交留言。要求:提交操作结束后仍然显示本页,如果提交成功,那么要显示出提示信息和此次提交的留言。如果提交失败,那么显示操作失败的信息。

 

想了一会,没想到什么好的方案。去网上搜了一下,关键字为:aspnet 重复提交

发现网上讨论得很激烈。随便看了几个网页,主要是看了csdn上的。发现没什么好的方案。有的方案太长,直接没心思看下去。

打算自己想一个简单易行的方案。

想了一会,找到一个比较可行的方案(如果各位有更好的方案,本着开发人员的奉献精神,请更贴哈!)。

思路如下:

1.当用户的操作经过客户端的验证到达服务器端后。执行到按钮的点击事件中。首先将按钮设置为不可用。

2.执行一系列的操作。比如这里是插入数据库。

3.将数据库操作的结果保存在一个string变量中。

4.重新定向到本页,并且在地址后面加上查询字符串。类似:

string details = "数据库操作结果";
Response.Redirect(Request.RawUrl + "?result="+details);

5.在本页的页面加载事件中,获取这个字符串,并且执行相应的提示操作。类似:

this.lblDetails=Request.QueryString["result"];

 

 

======华丽的分割线==========================

在写上面的方法的时候,想到一个问题。

在第4步中,将这个结构加入地址信息的时候,要判断此地址中是不是已经有了其他附加信息(类似:test.aspx?city=nanjing&date=20110813&...),如果是的话,那么拼接本次结果信息的时候,拼接符号应该为"&"。而且还存在一个问题,如果附加信息本来就很长了,那么要考虑这个长度问题了。

所以,有了如下方法:

前3步都一样。

4.将查询结果存放进viewstate中。类型:

ViewState["result"] = "数据库操作结果";
Response.Redirect(Request.RawUrl);

5.在本页的页面加载事件中,获取这个字符串,并且执行相应的提示操作。类似:

this.lblDetails = ViewState["result"].ToString();

 

 

以上仅为本人思路,如有不对,请多指教。

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值