ASP.NET - 如何阻止不需要的服务器验证

时间:2009-01-06 16:00:22

标签: asp.net javascript validation

我已经使用ValidatorEnable在javascript中禁用了RequiredFieldValidator。但是在回发时,验证器验证的控件仍然有效...即使我在客户端上禁用了验证器。

我理解为什么会发生这种情况,因为我只是禁用了客户端验证...但是有一种很好的方法可以确定我是否已禁用客户端验证,然后在回发时禁用服务器验证?

3 个答案:

答案 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()方法,并且允许我确保根据用户的当前选择启用/禁用服务器端验证器。