选中禁用必填字段验证程序的服务器端复选框

时间:2009-04-30 16:28:15

标签: asp.net controls

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

如果选中该复选框,并且用户提交表单,我需要允许它们继续,如果文本框为空(并选中复选框)。

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

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


我一直在尝试覆盖复选框的uniqueid,以便在自定义控件的OnInit事件中,如果this.Context.Request.Form [“CheckboxId”] =“On”,我可以禁用所需的fieldvalidators,但是我重写了viewstate停止工作的复选框的uniqueID。

我想到的另一件事是拥有一个自定义的requiredfieldvalidator,它在构造函数中使用Checkbox,如果值为false则被禁用。

1 个答案:

答案 0 :(得分:1)

您是否尝试通过覆盖 Control.OnLoad 方法在 Control.Load 事件期间执行控制初始化逻辑?
在控制生命周期的那个阶段,您应该能够访问CheckBox的值
另外,如果要禁用验证,则无需禁用所有 Validator 控件。相反,您只需在提交表单的按钮上将 Button.CausesValidation 属性设置为 False 即可。

<强>更新
这听起来像是在构建一个用户控件,这是一个复杂的控件,由一组简单的控件组成一个整体。
如果你想在代码中完全这样做,就像使用自定义控件一样,您应该继承CompositeControl类。这给你两全其美。然后通过覆盖CreateChildControls方法进行子控件初始化。