ASP.NET如何防止页面重复提交 (转载)
时间:2010-09-01 来源:wenlingy
// <summary>
/// 防止重复提交
/// </summary>
/// <param name="imaButtons">按键集合</param>
/// <param name="clientID">页面有JS验证的组件</param>
public void RepeatSubmitCheckForRC( List<Button> Buttons)
{
foreach (Button button in Buttons)
{
//sb保存的是JavaScript脚本代码,点击提交按钮时执行该脚本
StringBuilder sb = new StringBuilder();
//保证验证函数的执行
sb.Append("if (typeof(Page_ClientValidate) == 'function') { if (Page_ClientValidate() == false) { return false; }};");
//点击提交按钮后设置Button的disable属性防止用户再次点击,注意这里的this是JavaScript代码
sb.Append("this.disabled = true;");
//用__doPostBack来提交,保证按钮的服务器端click事件执行
sb.Append(this.ClientScript.GetPostBackEventReference(button, ""));
sb.Append(";");
//SetUIStyle()是JavaScript函数,点击提交按钮后执行,如可以显示动画效果提示后台处理进度
//注意SetUIStyle()定义在aspx页面中
sb.Append("SetUIStyle();");
//给提交按钮增加OnClick属性
button.Attributes.Add("onclick", sb.ToString()); }
}
调用方法的时候
List<Button> Buttons = new List<Button>();
Buttons.Add(sumbitButton);
Buttons.Add(saveButton);
RepeatSubmitCheckForRC(Buttons);
客户端代码
<script language="javascript" type="text/javascript">
//点击扣款按钮时,设置控件为Disabled
function SetUIStyle() {
var tbxText = document.getElementById("tbxText");
tbxText.disabled = true;
var labMessage = document.getElementById("lblMessage");
labMessage.innerText = "正在提交到服务器...";
}
</script>
转载地址:http://cao416451347ming.blog.163.com/blog/static/115455616201041753513152/