当asp验证器触发时,服务器端事件不会在第一次触发时触发

时间:2011-04-21 12:23:52

标签: asp.net validation server-side

我们的应用程序有一组设置,包括复选框,文本框和asp验证器。要更改其中一个设置,必须先使用复选框启用文本框。如果验证失败,则会通过验证程序显示一条消息,告知用户哪些值有效。一旦发生这种情况,我尝试取消选中该复选框(此操作应该再次禁用文本框并恢复文本框的先前值)没有任何反应,文本框保持不变。在最终触发CheckedChanged事件之前,我必须再次选中并取消选中该复选框。

可能需要注意的是,这些都在UpdatePanel中,并且在某些时候这些确实在面板中工作。如果有人有任何想法,我们不知所措。

2 个答案:

答案 0 :(得分:1)

我遇到了同样的问题。就我而言,它与更新面板有关。 我有一个带有几个复选框的updatepanel。根据其中一个复选框的设置,必须启用/禁用验证器,但验证器位于updatepanel外的另一个控件中。

如果您选中/取消选中复选框,则会触发ajax-postback。因此,无法正确还原客户端验证。因此,当您提交页面时,找不到客户端验证,而是触发服务器端验证。由于您的页面执行了完整的回发,因此客户端验证将再次绑定。当您再次单击“提交”按钮时,您会发现它们可以正常工作。

最简单的解决方案是将带有客户端验证程序的控件放在更新面板中。

答案 1 :(得分:0)

添加代码,至少是aspx,有助于发现问题。

没有任何代码,我最好的猜测是将CheckBox CausesValidation属性设置为"false"即使存在验证错误也会允许它回发。