【问题标题】:Validation in code behind在后面的代码中验证
【发布时间】:2012-04-24 05:00:21
【问题描述】:

在我的 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; }
}

现在,当我使用 IsValid() 函数检查此验证时,我将 Name 的值作为“test123”传递

public bool IsValid()
{
   return Validation.Validate<myclassname>(this).IsValid;
}

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

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

【问题讨论】:

  • ^[A-Za-z]*$的正则表达式试试。添加的 '^' 和 '$' 意味着该正则表达式应该匹配整个字符串而不是它的一部分。 asp.net regexvalidator 不需要这个,但这个属性可能。
  • 非常感谢 Hans Kesting,它工作正常............
  • @Hans Kesting:你能在回答会话中发布这个,以便我可以将其标记为回答

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


【解决方案1】:

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

添加的 '^' 和 '$' 意味着该正则表达式应该匹配整个字符串而不是它的一部分。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-02-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多