Export (0) Print
Expand All

CustomValidationAttribute Class

Designates a customized method to execute to validate the entity member.

System.Object
  System.Attribute
    System.ComponentModel.DataAnnotations.ValidationAttribute
      System.ComponentModel.DataAnnotations.CustomValidationAttribute

Namespace:  System.ComponentModel.DataAnnotations
Assembly:  System.ComponentModel.DataAnnotations (in System.ComponentModel.DataAnnotations.dll)

[AttributeUsageAttribute(AttributeTargets.Class|AttributeTargets.Method|AttributeTargets.Property|AttributeTargets.Field|AttributeTargets.Parameter, AllowMultiple = true)]
public sealed class CustomValidationAttribute : ValidationAttribute

The CustomValidationAttribute type exposes the following members.

  NameDescription
Public methodCustomValidationAttributeInitializes a new instance of the CustomValidationAttribute class.
Top

  NameDescription
Public propertyErrorMessageGets or sets the non-localizable error message to display when validation fails. (Inherited from ValidationAttribute.)
Public propertyErrorMessageResourceNameGets or sets the property name on the resource type that provides the localizable error message. (Inherited from ValidationAttribute.)
Public propertyErrorMessageResourceTypeGets or sets the resource type that provides the localizable error message. (Inherited from ValidationAttribute.)
Protected propertyErrorMessageStringGets the localized or non-localized error message. (Inherited from ValidationAttribute.)
Public propertyMethodGets the name of the method to invoke for validation.
Public propertyValidatorTypeGets the type that contains the method for validating the member.
Top

  NameDescription
Public methodEqualsInfrastructure. Returns a value that indicates whether this instance is equal to a specified object. (Inherited from Attribute.)
Protected methodFinalizeAllows an object to try to free resources and perform other cleanup operations before the Object is reclaimed by garbage collection. (Inherited from Object.)
Public methodFormatErrorMessageApplies formatting to an error message based on the data field where the error occurred. (Overrides ValidationAttribute.FormatErrorMessage(String).)
Public methodGetHashCodeReturns the hash code for this instance. (Inherited from Attribute.)
Public methodGetTypeGets the Type of the current instance. (Inherited from Object.)
Public methodGetValidationResultDetermines whether the specified object is valid and returns an object that includes the results of the validation check. (Inherited from ValidationAttribute.)
Protected methodIsValidDetermines whether the specified object is valid. (Inherited from ValidationAttribute.)
Public methodMatchWhen overridden in a derived class, returns a value that indicates whether this instance equals a specified object. (Inherited from Attribute.)
Protected methodMemberwiseCloneCreates a shallow copy of the current Object. (Inherited from Object.)
Public methodToStringReturns a string that represents the current object. (Inherited from Object.)
Public methodValidateDetermines whether the specified object is valid and throws a ValidationException if the object is not valid. (Inherited from ValidationAttribute.)
Top

You apply the CustomValidationAttribute attribute to an entity or one of its members when you need to specify a method to use for validating the entity or the value of the member. The CustomValidationAttribute attribute can be used with a method as an alternative to deriving a class from ValidationAttribute. The CustomValidationAttribute attribute can be applied to a class, property, field, method, or parameter.

The type supplied for the ValidatorType property must be marked as public in C# or Public in Visual Basic.

The method specified in the Method property must be public and static in C#, or Public and Shared in Visual Basic. The specified method must return a ValidationResult object that equals Success if the value is valid, or contains an error message if the value is not valid.

The validation method must contain at least one input parameter for the value to validate. The value parameter can be strongly typed. If an object of a different type is passed in the method, the CustomValidationAttribute class attempts to convert the passed value to the specified type before executing the validation method. The method may also accept a ValidationContext object to provide additional information about the validation request. The following examples show the allowed signatures in C# and Visual Basic.

public static ValidationResult MethodName(object value) {...}
public static ValidationResult MethodName(object value, ValidationContext context) {...}

Public Shared Function MethodName(value As Object) As ValidationResult
Public Shared Function MethodName(value As Object, context As ValidationContext) As ValidationResult

The first example shows how to apply the CustomValidationAttribute attribute to an entity member named SalesPerson and an entity class named CustomerAddress. The specified method named ValidateSalesPerson is executed when a value is applied to the SalesPerson property and the method named ValidateAddress is executed when values are applied to the CustomerAddress class.


public class Customer
{
  [CustomValidation(typeof(AWValidation), "ValidateSalesPerson")]
  public string SalesPerson { get; set; }
}

[CustomValidation(typeof(AWValidation), "ValidateAddress")]
public class CustomerAddress
{
  // Provide properties.
}


The second example shows the validation type and methods for validating the entity member and entity class. The parameters for the validation methods are strongly-typed. ValidateSalesPerson takes a string value containing the name of the sales person to apply to the property. ValidateAddress takes an instance of the CustomerAddress class.


using System.ComponentModel.DataAnnotations;

public class AWValidation
{
  public static ValidationResult ValidateSalesPerson(string salesPerson)
  {
    bool isValid;

    // Perform validation logic here and set isValid to true or false.

    if (isValid)
    {
      return ValidationResult.Success;
    }
    else
    {
      return new ValidationResult(
          "The selected sales person is not available for this customer.");
    }
  }

  public static ValidationResult ValidateAddress(CustomerAddress addressToValidate)
  {
    bool isValid;

    // Perform validation logic here and set isValid to true or false.

    if (isValid)
    {
      return ValidationResult.Success;
    }
    else
    {
      return new ValidationResult(
          "The address for this customer does not match the required criteria.");
    }
  }
}


Silverlight

Supported in: 5, 4, 3

For a list of the operating systems and browsers that are supported by Silverlight, see Supported Operating Systems and Browsers.

Any public static (Shared in Visual Basic) members of this type are thread safe. Any instance members are not guaranteed to be thread safe.

Community Additions

ADD
Show:
© 2014 Microsoft