自定义验证器asp.net

时间:2012-03-02 08:19:42

标签: asp.net validation

我正在执行客户端和服务器端验证,clientside-jquery和serverside-asp.net 我使用自定义验证器来检查数字文本框。问题是很少有文本框需要检查数字数据和数据的长度以及十进制后的数字。所以我想我不能为所有这些创建一个共同的onservervalidate函数作为他们的验证需求不同。 所以我需要对所有这些使用不同的验证控件..我可以在一个onservervalidate上调用三种不同的方法... 任何建议,谢谢

2 个答案:

答案 0 :(得分:1)

您可以使用正则表达式类。在此范围内,您只需要一个功能来验证您的数据满足您的所有要求。

regex类是一个功能强大的类,您可以在其中定义字符串必须匹配的复杂模式。这是我的页面的一个更简单的正则表达式验证器函数,如果参数(pass)中的字符串send与模式匹配,则返回一个布尔值。

    Public Function validatepass(ByVal pass As String) As Boolean
    Dim pattern As String = "^\S{6}\S*$"
    Dim MatchString As Match = Regex.Match(pass, pattern)
    If MatchString.Success Then
        Return True
     Else
        Return False
     End If
     End Function

它的工作方式如下:          Dim pattern As String =“^ \ S {6} \ S * $” //在这一行你定义模式,^是字符串的左端,$是右端 \ S {6}匹配字符串的前6个字符,并接受除空白字符之外的任何字符 \ S *几乎相同,但*表示它可以是任意数量的字符(除了空格字符之外的任何字符)

如此有效地这种模式不接受空格并且要求字符串至少为6个字符

要获得全面的指南,请阅读以下内容: http://www.codeproject.com/Articles/9099/The-30-Minute-Regex-Tutorial

在这种情况下,正则表达式模式应为:^ \ d {10},\ d {2} $

你可以通过这样的函数使用相同的模式语法进行服务器端验证,或者通过创建customregex验证器并在相应的属性中使用模式来使用客户端。

答案 1 :(得分:1)

  

问题是几乎没有需要检查数字的文本框   数据和数据的长度以及小数点后的数字。

所以你基本上有三个需求......

  
      
  1. 必须有一些价值。
  2.   
  3. 数值
  4.   
  5. 十进制值
  6.   

以下是三合一解决方案......使用ReguarExpressionValidation

<asp:RegularExpressionValidator ID="ValExp" runat="server" 
ValidationExpression="^[0-9]+(\.[0-9]+)$" 
ControlToValidate="Controlname"></asp:RegularExpressionValidator>