【问题标题】:Using custom Validator server controls使用自定义验证器服务器控件
【发布时间】:2012-01-08 03:45:16
【问题描述】:

我需要编写一个自定义验证器来检查文本框是否包含带小数的数字,例如 95.3。在 asp.net 的验证器服务器控件中要完成的表达式是什么?

【问题讨论】:

  • 如果用户的输入包含小数或要求它有小数,您是否希望验证失败?

标签: asp.net


【解决方案1】:

这样的东西应该可以工作,您可以修改以允许您需要或想要的尽可能多的小数位:

\d{0,}.\d{0,2}

假设您正在谈论正则表达式。但如果你是,你应该使用正则表达式验证器而不是自定义的。

另外,这里是另一个非常相似的问题的链接。 link

【讨论】:

    【解决方案2】:

    请尝试以下方法:

    float f;
    bool isFloat =float.TryParse("a.0", out f); //Will return false
    
    bool isFloat2 =float.TryParse("95.3", out f); //will return true
    

    祝你好运!

    【讨论】:

      【解决方案3】:

      在 validator_ServerValidate 事件中你可以这样做:

      Protected Sub CustomValidator1_ServerValidate(ByVal source As Object, ByVal args As System.Web.UI.WebControls.ServerValidateEventArgs) Handles CustomValidator1.ServerValidate
          If args.Value.Contains(".") Then
              '*** Textbox has a decimal...do what you need to handle it  ***'
      
          End If
      End Sub
      

      但正如其他人所提到的,在不了解您究竟需要发生什么的情况下,您可能希望查看正则表达式验证器并尝试在客户端而不是服务器端进行验证(除非你需要让它在回发时发生)

      【讨论】:

      • 虽然这实际上会检测某些字符串是否包含点“。”与否,它也会在任何其他字符串上找到一个点。
      • 正如我所提到的,他需要更详细地描述他希望如何进行验证......如果它需要在服务器端,那么他也可以简单地检查该值是否为数字好吧(希望他至少知道该怎么做)。
      【解决方案4】:

      不确定这是否正是您要查找的内容,但我很久以前看过这篇文章,其中解释了如何做到这一点。你可能想看看: http://aspdotnet-sequel.blogspot.com/2009/05/aspnet-textbox-validate-integer-float.html

      【讨论】:

        猜你喜欢
        • 2010-12-15
        • 2014-08-11
        • 2011-04-13
        • 1970-01-01
        • 1970-01-01
        • 2012-03-03
        • 1970-01-01
        • 2018-03-01
        • 2018-07-23
        相关资源
        最近更新 更多