验证代码背后

时间:2012-04-24 05:00:21

标签: c# asp.net validation enterprise-library

在我的ASP.net应用程序中,我在业务对象类文件中引用以下dll文件进行验证。

using Microsoft.Practices.EnterpriseLibrary.Common;
using Microsoft.Practices.EnterpriseLibrary.Validation;
using Microsoft.Practices.EnterpriseLibrary.Validation.Validators;

我正在验证像这样的属性

[StringLengthValidator(1, 50, MessageTemplateResourceName = "INVALID_NAME", 
 MessageTemplateResourceType = typeof(ValidatioinErrors))]
[RegexValidator("[A-Za-z]*", MessageTemplateResourceName = "INVALID_NAME",
 MessageTemplateResourceType = typeof(ValidatioinErrors))]
public string Name
{
  get { return name; }
  set { name = value; }
}

现在我将Name的值传递为“test123”,当我使用像

这样的IsValid()函数检查此验证时
public bool IsValid()
{
   return Validation.Validate<myclassname>(this).IsValid;
}

当我在将name的值作为“test123”传递后检查此IsValid()函数时,它接受此给定的名称,而不是通过拒绝它来返回无效的名称。

我在哪里犯了错误?任何人都可以帮助我....

1 个答案:

答案 0 :(得分:0)

使用^[A-Za-z]*$的正则表达式尝试。

添加的'^'和'$'表示该正则表达式应匹配整个字符串而不仅仅是其中的一部分。

asp.net regexvalidator不需要这些,但这是一个例外。常规正则表达式需要这些锚点才能匹配完整的输入,而且这个属性显然也是如此。