【问题标题】:Custom Validator on a asp button?asp按钮上的自定义验证器?
【发布时间】:2010-12-03 12:00:17
【问题描述】:

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

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

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

谢谢

【问题讨论】:

  • 您想要服务器端还是客户端验证,还是两者都需要?我不认为创建虚拟控件是一个好主意,它会使代码复杂化。为什么不只处理 OnClientClick 并设置一个标志,例如 isButtonClicked 然后在允许回发之前检查此值。

标签: .net asp.net validation


【解决方案1】:

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

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

//create variable
private bool _isButtonClicked;

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

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

希望这会有所帮助。

【讨论】:

    【解决方案2】:

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

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

    if (!IsValid) return;
    

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

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

    【讨论】:

      猜你喜欢
      • 2018-07-30
      • 2015-08-21
      • 2013-09-09
      • 2011-02-21
      • 1970-01-01
      • 1970-01-01
      • 2019-02-03
      • 2018-07-28
      • 2013-02-27
      相关资源
      最近更新 更多