从Validator中检索显示名称

时间:2014-02-17 16:23:53

标签: c# .net validation localization attributes

我有一个使用DisplayRegularExpression属性的模型类,如下所示:

public partial class User
{
    [Display(Name = "LOGIN_FIELD", ResourceType = typeof(Resources.General.User))]
    [Required(ErrorMessageResourceName = "MISSING_LOGIN", ErrorMessageResourceType = typeof(Resources.General.User))]
    [StringLength(20, MinimumLength = 3,
                  ErrorMessageResourceName = "LOGIN_LENGTH_ERROR", ErrorMessageResourceType = typeof(Resources.General.User))]
    [RegularExpression(@"^[a-zA-Z0-9]{1,40}$",
                       ErrorMessageResourceType = typeof(Resources.General.User), ErrorMessageResourceName = "LOGIN_FORMAT_ERROR")]
    public string LOGIN { get; set; }
}

我稍后使用Validator.TryValidateObject查找此类实例中的任何错误:

var isValid = Validator.TryValidateObject(
            instance: usuario,
            validationContext: new ValidationContext(usuario,
                                                     serviceProvider: null,
                                                     items: null),
            validationResults: validationResults,
            validateAllProperties: true);

通过这种方式,我得到了正确本地化的错误消息(ValidationResult.ErrorMessage),但是有问题的字段(ValidationResult.MemberNames)的名称只是字段名称(在这种情况下,LOGIN ),而不是资源文件中的字符串。

我需要获取具有每个成员的本地化名称的本地化错误消息的列表。最简单的方法是什么?我可以向Validator指定我想要的名称吗?我必须使用反射吗?

0 个答案:

没有答案