使用企业库验证块进行复杂对象验证

时间:2010-02-13 08:48:04

标签: .net enterprise-library

使用企业库验证。

我有类似下面的课程

 public class Customer
    {

        public int Id { get; set; }
        [NotNullValidator(MessageTemplate = "{1} is null")]
        public string FirstName { get; set; }
        [NotNullValidator(MessageTemplate = "{1} is null")]
        public string Surname { get; set; }

    }

  public class Order
    {

        public int Id { get; set; }
        [NotNullValidator(MessageTemplate = "{1} is null")]
        public Customer Customer { get; set; }

    }

当我使用订单对象时,姓氏和名字都是空的,验证应该启动,但事实并非如此。

我做错了什么?

注意:我在WCF中使用它

2 个答案:

答案 0 :(得分:5)

您应该使用[ObjectValidator]属性修饰您的Customer属性。这将确保验证应用程序将验证对象图:

public class Order
{
    [ObjectValidator]
    public Customer Customer { get; set; }
}

提示:您应该阅读Validation Application Block 4.1 Hands On Labs附带的ValidationHOL.pdf(动手实验室)文档(PDF是下载的一部分)。它将为您提供有关VAB的大量信息,这些信息很难在您的信息中找到。

答案 1 :(得分:0)

您正确地声明了验证规则,但是您没有验证您的客户(评估规则)。使用企业库验证块进行验证的方式如下:

ValidationResults r = Validation.Validate<Customer>(myCustomer);

请参阅相应的MSDN article