- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我有以下代码来测试类属性:
public class RegExtTest
{
[RegularExpression(@"^[A-z0-9]{6}$", ErrorMessage = "Lot must be 6 characters alphanumeric")]
public string Lot { get; set; }
}
和一个通用扩展方法来验证包含一个或多个这些对象的类
public static IEnumerable<string> ValidateObject(this object objectToValidate)
{
var result = new List<string>();
var objType = objectToValidate.GetType();
var properties = objType.GetProperties();
foreach (var propertyInfo in properties)
{
var attrs = propertyInfo.GetCustomAttributes(typeof(ValidationAttribute), true);
foreach (var attribue in attrs)
{
try
{
var validationAttr = attribue as ValidationAttribute;
if (validationAttr != null)
{
validationAttr.Validate(objectToValidate,propertyInfo.Name);
}
}
catch (Exception e)
{
if (e is ValidationException)
result.Add(e.Message);
}
}
}
return result;
}
但是当值为“a23456”时验证失败。我使用 Regex 类对此进行了单元测试,如下所示:
var isMatch = Regex.IsMatch(lbp.Lot, "^[A-z0-9]{6}$");
以上测试通过。我在这里做错了什么? RegularExpressionAttribute 中是否有一些我不知道的问题
最佳答案
您错误地使用了 Validate
方法。
代替
validationAttr.Validate(objectToValidate,propertyInfo.Name);
使用
validationAttr.Validate(propertyInfo.GetValue(objectToValidate, null),propertyInfo.Name);
您必须将属性的实际值 传递给Validate
方法,因为RegularExpressionAttribute
类只会调用。 ToString()
在 value
参数上并根据其模式检查它。
但使用 Validator
class 仍然是最简单的, as Jay already said in his answer.
关于c# - RegularExpressionAttribute 总是失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17973861/
我有一个用于客户端验证的字符串: private const String regex = @"^(?:\b(?:\d{5}(?:\s*-\s*\d{5})?|([A-Z]{2})\d{3}(?:\s
我需要验证的只是一个小数点(或一个点)。 我使用了以下正则表达式: "\.+" 我用 .NET 编译器和 JS 测试器进行了测试,表达式似乎是有效的。 我在模型中有以下属性: [RegularExpr
我正在使用这个正则表达式:@"[ \]\[;\/\\\?:*""<>|+=]|^[.]|[.]$" 第一部分[ \]\[;\/\\\?:*""<>|+=]应匹配括号内的任何字符。 下一部分 ^[.]如
我有以下代码来测试类属性: public class RegExtTest { [RegularExpression(@"^[A-z0-9]{6}$", ErrorMessage = "Lot
public class City { [DynamicReqularExpressionAttribute(PatternProperty = "RegEx")] public stri
我无法对使用 MVC3RTM 的正则表达式进行客户端验证。当我注释掉 RegularExpression 属性时,所有其他客户端验证都有效,所以我知道这是导致我出现问题的原因。 我有一个简单的模型。
我正在使用 RegularExpressionAttribute 来验证属性。该属性需要允许除零长度字符串、null 或(仅)空格之外的任何内容。我使用的正则表达式是 "^(?!^ *$)^.+$".
我需要一个匹配包含“[S]”的文本的正则表达式模式。我试过这样的事情: ^(?\\[S\\]$)$ 但它不起作用。我怎样才能做到这一点? 编辑: 正则表达式的目的是将其用作客户端验证中的正则表达式:
我们为 MVC3 应用程序编写自定义 RegularExpressionAttribute。自定义 RegularExpressionAttribute 的目的是,我们想用关键字替换资源文件消息中的
我使用 RegularExpressionAttribute像这样在我的 EF 元数据上: [RegularExpression("[A-Z]+")] public string Code { get
为了保持我的模型验证干净,我想实现我自己的验证属性,比如 PhoneNumberAttribute和 EmailAttribute .其中一些可以有利地实现为从RegularExpressionAtt
The Gu provides an example介绍如何创建覆盖 RegularExpressionAttribute 的自定义验证器。 这样做的好处是你不必create a custom Mod
我是一名优秀的程序员,十分优秀!