我已经使用ValidatorEnable在javascript中禁用了RequiredFieldValidator。但是在回发时,验证器验证的控件仍然有效...即使我在客户端上禁用了验证器。
我理解为什么会发生这种情况,因为我只是禁用了客户端验证...但是有一种很好的方法可以确定我是否已禁用客户端验证,然后在回发时禁用服务器验证?
答案 0 :(得分:3)
当您禁用客户端验证(可能是使用JavasScript?)时,您也可以在隐藏输入中设置值,您可以在页面加载方法中查询。这样,您可以检查隐藏输入的值(通过Request.Form {]数组),以便在验证事件触发之前禁用服务器端的验证器。
另一种选择是覆盖页面Validate()方法,以根据在客户端隐藏它们的相同规则来禁用验证器。
答案 1 :(得分:2)
您的问题并不清楚,您正在禁用什么。 RequiredFieldValidator具有Enabled和EnableClientScript属性。
如果要在客户端和服务器上禁用验证,则应将Enabled设置为false。
要仅禁用客户端,请将EnableClientScript设置为false。
答案 2 :(得分:0)
花生,我刚刚解决了同样的问题。在客户端,我有javascript根据他们在UI中的选择禁用所需的字段验证器。但是,服务器端验证仍在解决。
在加载过程中,我添加了一种方法来禁用我的验证器,使用与javascript相同的规则。就我而言,它取决于用户选择的单选按钮:
this.requiredValidator.Enabled = this.myRadioButton.Checked;
这似乎适用于SECOND页面加载,但不是第一个。在调试之后,我发现当这条线被触发时,认为检查了错误的单选按钮。在我检查它以禁用验证器时,View State / Post Data未应用于控件。我在加载过程中放置它的原因是为了确保在触发之前禁用了验证器。
所以,解决方案似乎是拥有类似于AFTER ViewState之上的行,但是在验证器之前。
像Palehorse建议的那样重载Validate()方法,并且允许我确保根据用户的当前选择启用/禁用服务器端验证器。