Asp.net 选中“禁用服务器端必需的字段验证器”复选框

Asp.net 选中“禁用服务器端必需的字段验证器”复选框,asp.net,controls,Asp.net,Controls,我有一个自定义控件,其中包含多个文本框字段和一个复选框 如果复选框被选中,并且用户提交表单,我需要允许他们在文本框为空(并且复选框被选中)的情况下继续 我必须在没有javascript的情况下实现这一点 问题是,在自定义控件的OnInit事件中,我连接文本框及其验证器,无法访问复选框的值 我一直在尝试覆盖复选框的uniqueid,以便在自定义控件的OnInit事件中,如果此.Context.Request.Form[“CheckboxId”]=“On”,我可以禁用所需的FieldValidat

我有一个自定义控件,其中包含多个文本框字段和一个复选框

如果复选框被选中,并且用户提交表单,我需要允许他们在文本框为空(并且复选框被选中)的情况下继续

我必须在没有javascript的情况下实现这一点

问题是,在自定义控件的OnInit事件中,我连接文本框及其验证器,无法访问复选框的值


我一直在尝试覆盖复选框的uniqueid,以便在自定义控件的OnInit事件中,如果此.Context.Request.Form[“CheckboxId”]=“On”,我可以禁用所需的FieldValidator,但一旦覆盖复选框的uniqueid,viewstate就会停止工作


我想到的另一件事是有一个自定义requiredfieldvalidator,它接受构造函数中的复选框,如果值为false,它将被禁用。

您是否尝试过在control.Load事件期间通过覆盖control.OnLoad方法来执行控件初始化逻辑?
在控制生命周期的那个阶段,您应该能够访问复选框的值。

作为补充说明,如果要禁用验证,则不必禁用所有验证程序控件。相反,您可以简单地将提交表单的按钮上的按钮。CausesValidation属性设置为False

更新:

听起来像是在构建一个用户控件,这是一个复杂的控件,由作为一个单元一起工作的简单控件聚合而成。
如果希望完全在代码中完成此操作,就像使用自定义控件一样,应该从类继承。这让你两全其美。然后通过重写该方法进行子控件初始化

你是否有一篇文章的链接来描述如何做到这一点?我看到的所有示例都使用OnInit在自定义控件中添加控件。按钮位于包含已验证控件的自定义控件之外,因此这不是一个选项。现在,我看到复选框的值为false,无论在onload中是什么,我还没有机会看到这是否是一个解决方案,但我会告诉你这是否正确,谢谢。