问题描述:在一个注册页面中,由于需要验证的控件很多,而且好多地方需要与数据库交互查询是否有重复的记录,
在这个项目中需要三次遍历数据库,所以想尝试下ajax异步调用,目的是为了减少用户注册时等待时间(由于验证
是否存在此记录采用的是自定义验证控件,点提交时需要n次查询数据库的记录),可是需要解决的是异步验证的状态
(是不是存在该条记录),于是在js里写了个状态返回函数
function checkvalid()
{
if(state1||state2||state3)
return false;
return true;
}
然后在页面cs文件里面注册下客户端事件,
ImageButton1.Attributes.Add("onclick", "javascript:return checkvalid();");
运行。。。。结果ShowSummary什么也没弹出,查看源文件发现:
<input type="submit" name="Button1" value="Button" onclick="checkvalid();javascript:return checkvalid();WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions("Button1", "", true, "", "", false, false))" id="Button1" /></div>
可以看出自己在cs文件里面注册下客户端事件把服务器端事件给覆盖掉了。
在OnClientClick事件中加上也不行。
于是改变原来的方案,在页面中添加一个TextBox和一个非空验证控件。然后根据异步验证结果来动态的设置TextBox的值,当存在记录是设置TextBox的值为空,然后在验证控件里显示相应的提示信息。问题就解决了。。。
在这个项目中需要三次遍历数据库,所以想尝试下ajax异步调用,目的是为了减少用户注册时等待时间(由于验证
是否存在此记录采用的是自定义验证控件,点提交时需要n次查询数据库的记录),可是需要解决的是异步验证的状态
(是不是存在该条记录),于是在js里写了个状态返回函数
function checkvalid()
{
if(state1||state2||state3)
return false;
return true;
}
然后在页面cs文件里面注册下客户端事件,
ImageButton1.Attributes.Add("onclick", "javascript:return checkvalid();");
运行。。。。结果ShowSummary什么也没弹出,查看源文件发现:
<input type="submit" name="Button1" value="Button" onclick="checkvalid();javascript:return checkvalid();WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions("Button1", "", true, "", "", false, false))" id="Button1" /></div>
可以看出自己在cs文件里面注册下客户端事件把服务器端事件给覆盖掉了。
在OnClientClick事件中加上也不行。
于是改变原来的方案,在页面中添加一个TextBox和一个非空验证控件。然后根据异步验证结果来动态的设置TextBox的值,当存在记录是设置TextBox的值为空,然后在验证控件里显示相应的提示信息。问题就解决了。。。