如何防止验证用户控件的事件处理程序?

时间:2016-09-10 20:05:28

标签: asp.net

我有一个带删除按钮的用户控件。单击按钮时,将触发一个事件,从数据库中删除记录。现在,控件放在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",按钮就会变为可点击。但我不想手动重写客户端验证!

1 个答案:

答案 0 :(得分:0)

如果表单不是PostBack而不管是哪个元素导致它,那么IsValid就不会发生。只要该元素(按钮)位于runat="server"无效的表单内,就不会发生回发。

一个非常简单的解决方法是在我的用户控制旁边使用Button旁路验证:CausesValidation="False"(感谢this问题)。

另一种解决方案,也许是更有效的解决方案,是使用ValidationGroup。这样,所有TextBox es与提交Button一起将属于一个组,并且那些不属于该组的控件将不会被验证。事实上,他们可能有自己的ValidationGroup;这样可以避免在一个Web表单中的不同控件之间产生干扰。