我有一个带删除按钮的用户控件。单击按钮时,将触发一个事件,从数据库中删除记录。现在,控件放在Default.aspx
中。 Default.aspx
的全身标记(包括用户控件及其按钮本身)根据ASP.NET的要求驻留在<form runat="server">
中。一切都运作到目前为止。
然而,问题是我在Default.aspx
内部放置了一些验证控件(意味着在<form runat="server">
内,否则页面将报告服务器错误)。添加验证控件后,用户控件中的删除按钮将停止工作。单击此按钮不再像以前那样触发事件。
现在,我使用Default.aspx
指令在EnableEventValidation="false"
中禁用了事件验证。我还在代码隐藏文件中包含UnobtrusiveValidationMode = System.Web.UI.UnobtrusiveValidationMode.None;
。但是,这一切都没有帮助。
我确信验证控件是导致问题的原因,因为我只需要为每个控件添加EnableClientScript="False"
,按钮就会变为可点击。但我不想手动重写客户端验证!
答案 0 :(得分:0)
如果表单不是PostBack
而不管是哪个元素导致它,那么IsValid
就不会发生。只要该元素(按钮)位于runat="server"
无效的表单内,就不会发生回发。
一个非常简单的解决方法是在我的用户控制旁边使用Button旁路验证:CausesValidation="False"
(感谢this问题)。
另一种解决方案,也许是更有效的解决方案,是使用ValidationGroup
。这样,所有TextBox
es与提交Button
一起将属于一个组,并且那些不属于该组的控件将不会被验证。事实上,他们可能有自己的ValidationGroup
;这样可以避免在一个Web表单中的不同控件之间产生干扰。