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);
...
好的,刚刚找到了处理密封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