asp按钮上的自定义验证器?

时间:2009-10-03 00:24:22

标签: .net asp.net validation

我需要在asp按钮上进行一些验证,以确保至少点击一次。

我设置了一个自定义验证器,将controlToValidate设置为按钮,但后来发现自定义验证器只能验证某些控件,而按钮不是其中之一。

我考虑过直接在按钮旁边验证一个不可见的文本框,但这感觉不对。为这种事创建虚拟控件好吗?还是不好的做法?有什么建议吗?

由于

2 个答案:

答案 0 :(得分:2)

我将远离创建虚拟控件。我问你,为什么你需要验证这个?为什么用户必须至少点击一次按钮一次?也许你正在使用错误的控制,不知道你想要完成什么,我仍然建议你看看使用复选框或单选按钮的可能性。如果这样做,使用自定义验证器就没有问题。

但是,如果由于某些疯狂的原因你需要使用按钮并确保用户至少点击一次,那么只需在代码中设置一个变量,并在单击按钮时为其指定一个值。在进行验证时检查此变量的值...如果变量仍然具有默认值,则表示用户没有单击它。

//create variable
private bool _isButtonClicked;

//set to true when user clicks
_isButtonClicked = true;

//check if it has been clicked
if(_isButtonClicked == true)

希望这有帮助。

答案 1 :(得分:2)

当我使用CustomValidator控件时,我通常使用OnServerValidate方法并在后面的代码中进行验证。

然后,在btnSubmit_Click上我做了一个:

if (!IsValid) return;

如果验证失败,这将强制浏览器触发validate方法并向任何摘要控件报告。

在cusValidator_OnServerValidate方法中,检查然后根据验证结果设置args.IsValid = true | false。你也可以设置来自OnServerValidate的hte错误消息,如果你在相同的验证器中针对同一个控件检查多个验证规则(即:文本框不能为null但格式必须是日期,或类似的东西,你在这种情况下也可以使用requiredfieldvalidator)