我的正则表达式的验证消息有问题。除了下面的一个字段外,本地化消息随处可见:
[LocalizedDisplayName("LblWordCount", NameResourceType = typeof(ValidationMessages.Messages))]
[Required(ErrorMessageResourceName = "ErrorFieldRequired", ErrorMessageResourceType = typeof(ValidationMessages.Messages))]
[RegularExpression(@"^[0-9]+$", ErrorMessage = "", ErrorMessageResourceName = "ErrorDigitsOnly", ErrorMessageResourceType = typeof(ValidationMessages.Messages))]
public Int32 WordCount { get; set; }
我在resx文件中放入“ErrorDigitsOnly”并不重要 - 默认消息总是踢出:“值'zxzza1'对字数无效。”例如 - [Required]的消息正确显示。
对此有何建议?
干杯, 303
我已经检查了拼写错误的代码,但找不到任何错误。
答案 0 :(得分:3)
我实际上遇到了类似的情况。 您是否尝试在另一个类中设置wordcount验证,而不是在DataAnnotation属性中使用正则表达式模式?
例如 -
public class EmailAttribute: RegularExpressionAttribute
{
public EmailAttribute() : base(@"[^@\.]+(\.[^@\.]+)*@[^@\.]+(\.[^@\.]+)?(\.[^@\.]{2,})")
{
}
public override string FormatErrorMessage(string name)
{
return Resources.Resources.emailValidation;
}
}
然后您可以使用这样的属性 -
[CustomRequired]
[Email]
public string Email { get; set; }
以这种方式使用它的好处意味着您可以在资源上获得强大的输入,并且还允许您编写更整洁的验证类。
希望它有所帮助!