Export (0) Print
Expand All

Using Attributes to Define Validation Rule Sets

Retired Content

This content is outdated and is no longer being maintained. It is provided as a courtesy for individuals who are still using these technologies. This page may contain URLs that were valid when originally published, but now link to sites or pages that no longer exist.

The latest Enterprise Library information can be found at the Enterprise Library site.

You can include attributes in your code to define rule sets. This is an alternative to using configuration or code. The following code example shows how to use attributes to define a rule set named "RuleSetA."

using Microsoft.Practices.EnterpriseLibrary.Common.Configuration;
using Microsoft.Practices.EnterpriseLibrary.Validation;
using Microsoft.Practices.EnterpriseLibrary.Validation.Validators;

public class Customer
{
  private string firstName;
  private string lastName;
  private DateTime dateOfBirth;
  private string email;
  private Address address;

  [StringLengthValidator(1, 50, Ruleset="RuleSetA",
               MessageTemplate="First Name must be between 1 and 50 characters")]
  public string FirstName
  {
    get { return firstName; }
    set { firstName = value; }
  }

  [StringLengthValidator(1, 50, Ruleset = "RuleSetA", 
               MessageTemplate = "Last Name must be between 1 and 50 characters")]
  public string LastName
  {
    get { return lastName; }
    set { lastName = value; }
  }

  [RelativeDateTimeValidator(-120, DateTimeUnit.Year, -18, 
                   DateTimeUnit.Year, Ruleset="RuleSetA", 
                   MessageTemplate="Must be 18 years or older.")]
  public DateTime DateOfBirth
  {
    get { return dateOfBirth; }
    set { dateOfBirth = value; }
  }

  [RegexValidator(@"\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*", 
                 Ruleset = "RuleSetA")]
  public string Email
  {
    get { return email; }
    set { email = value; }
  }

  [ObjectValidator("ValidAddress", Ruleset="RuleSetA")]
  public Address Address
  {
    get { return address; }
    set { address = value; }
  }

  [RangeValidator(0, RangeBoundaryType.Inclusive, 1000000, 
        RangeBoundaryType.Inclusive, Ruleset="RuleSetA", 
        MessageTemplate="Rewards points cannot exceed 1,000,000") 
  public int RewardPoints
  {
    get { return rewardPoints; }
    set { rewardPoints = value; }
  }

}

This code defines a class named Customer that includes a number of properties such as FirstName and LastName. Attributes that are attached to these properties associate them with validators. For example, the StringLengthValidator attribute is attached to the FirstName property and associates it with the StringLengthValidator class. This attribute includes two constructor parameters that constrain the length of the value contained in the FirstName field, a parameter that specifies the rule set to apply, and a parameter that defines the message template. The message template contains the message that is returned if validation fails.

The Ruleset parameter of the validation attributes indicates that the application block will use "RuleSetA" instead of the anonymous, default rule set. In this example, the ObjectValidator attribute is a part of the "RuleSetA" rule set and refers to the "RuleSetA" rule set of the Address class.


Show:
© 2014 Microsoft