Using Attributes to Define Validation Rule Sets
Enterprise Library 4.1 - October 2008
Using Attributes to Define Validation Rule Sets

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."

                  Imports Microsoft.Practices.EnterpriseLibrary.Common.Configuration
Imports Microsoft.Practices.EnterpriseLibrary.Validation
Imports Microsoft.Practices.EnterpriseLibrary.Validation.Validators

Public Class Customer

  Private _firstName As String
  Private _lastName As String
  Private _dateOfBirth As DateTime
  Private _email As String
  Private _address As Address 
  Private _rewardPoints As Integer

  <StringLengthValidator(1, 50, Ruleset:="RuleSetA", _
              MessageTemplate:="First Name must be between 1 and 50 characters")> _
  Public Property FirstName() As String
    Get
      Return _firstName
    End Get
    Set(ByVal value As String)
      _firstName = value
    End Set
  End Property


  <StringLengthValidator(1, 50, Ruleset:="RuleSetA", _
               MessageTemplate:="Last Name must be between 1 and 50 characters")> _
  Public Property LastName() As String
    Get
      Return _lastName
    End Get
    Set(ByVal value As String)
      _lastName = value
    End Set
  End Property

  <RelativeDateTimeValidator(-120, DateTimeUnit.Year, -18, _
                   DateTimeUnit.Year, Ruleset:="RuleSetA", _
                   MessageTemplate:="Must be 18 years or older.")> _
  Public Property DateOfBirth() As DateTime
    Get
      Return _dateOfBirth
    End Get
    Set(ByVal value As DateTime)
      _dateOfBirth = value
    End Set
  End Property

  <RegexValidator("\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*", _
                  MessageTemplate:="Invalid e-mail address", _
                  Ruleset:="RuleSetA")> _
  Public Property Email() As String
    Get
      Return _email
    End Get
    Set(ByVal value As String)
      _email = value
    End Set
  End Property

  <ObjectValidator("ValidAddress", Ruleset:="RuleSetA")> _
  Public Property Address() As Address
    Get
      Return _address
    End Get
    Set(ByVal value As Address)
      _address = value
    End Set
  End Property

  <RangeValidator(0, RangeBoundaryType.Inclusive, 1000000, _
        RangeBoundaryType.Inclusive, Ruleset:="RuleSetA", _
        MessageTemplate:="Rewards points cannot exceed 1,000,000")> _
  Public Property RewardPoints() As Integer
    Get
      Return _rewardPoints
    End Get
    Set(ByVal value As Integer)
      _rewardPoints = value
    End Set
  End Property

End Class

                

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.


© 2010 Microsoft Corporation. All rights reserved.   Terms of Use | Trademarks | Privacy Statement
Page view tracker
Rate the Lightweight library
x
Lightweight builds on ScriptFree (loband) by adding features you've requested: a SearchBox and default code language selection.
Do you like the SearchBox?
Do you like the tabbed code blocks?
How useful is this topic?
Tell us more.
Thanks
x
You're helping to improve MSDN Online.
Feedback
Switch View
Classic
Lightweight Beta
ScriptFree
Switch View