Validator.TryValidateProperty Not Working

本文关键字:Working Not TryValidateProperty Validator | 更新日期: 2023-09-27 17:59:13

我正在尝试实现Validator.TryValidateProperty,即使存在〔Required〕DataAnnotation,TryValidateProperties也会返回有效响应。

这是我的客户部分类别:

[MetadataType(typeof(Customer.Metadata))]
public partial class Customer : global::System.Data.Objects.DataClasses.EntityObject 
{
   ...
private sealed class Metadata
    {
        [Required]
        [SSNValidAttribute(ErrorMessage = "The SSN should be 9 numeric characters without any punctuation.")]
        [DisplayName("SSN")]
        public String SSN { get; set; }
...

这是返回True的代码:

...
var customer = new Customer();
            customer.SSN = "";
            var vc = new ValidationContext(customer, null, null);
            vc.MemberName = "SSN";
            var res = new List<ValidationResult>();
            var result = Validator.TryValidateProperty(customer.SSN, vc, res);
...

Validator.TryValidateProperty Not Working

好的,刚刚找到了处理密封MetadataType类的解决方案。

var customer = new Customer();
TypeDescriptor.AddProviderTransparent
(new AssociatedMetadataTypeTypeDescriptionProvider
    (customer.GetType()), customer.GetType());
customer.SSN = "";
var vc = new ValidationContext(customer, null, null);
vc.MemberName = "SSN";
var res = new List<ValidationResult>();
var result = Validator.TryValidateProperty(customer.SSN, vc, res);

我不得不添加以下内容:

TypeDescriptor.AddProviderTransparent
(new AssociatedMetadataTypeTypeDescriptionProvider
    (customer.GetType()), customer.GetType());

在以下地址找到解决方案:http://forums.silverlight.net/forums/p/149264/333396.aspx