C# 从验证器检索显示名称
我有一个使用C# 从验证器检索显示名称,c#,.net,validation,localization,attributes,C#,.net,Validation,Localization,Attributes,我有一个使用显示和正则表达式属性的模型类,如下所示: public partial class User { [Display(Name = "LOGIN_FIELD", ResourceType = typeof(Resources.General.User))] [Required(ErrorMessageResourceName = "MISSING_LOGIN", ErrorMessageResourceType = typeof(Resources.General.Us
显示
和正则表达式
属性的模型类,如下所示:
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
),而不是资源文件中的字符串
我需要获得带有每个成员的本地化名称的本地化错误消息列表。最简单的方法是什么?我可以向验证器指定我想要的名称吗?我必须使用反射吗?我也有同样的问题,你能分享一下你的解决方案吗?对不起,我已经好几年没有接触过C了。我想我成功了,但对结果不满意,否则我会把它贴在这里。