This is an example of a simple MVC application using Enterprise Library validation
First add the EL validation to your project using nuget:

Now the Enterprise Library Validation has to be added to the ModelValidatorProviders
Create a EnterpriseLibraryValidatorWrapper class
using System.Collections.Generic;
using System.Web.Mvc;
using Microsoft.Practices.EnterpriseLibrary.Validation;
public class EnterpriseLibraryValidatorWrapper : ModelValidator
{
private Validator _validator;
public EnterpriseLibraryValidatorWrapper(ModelMetadata metadata, ControllerContext context, Validator validator)
: base(metadata, context)
{
_validator = validator;
}
public override IEnumerable<ModelValidationResult> Validate(object container)
{
return ConvertResults(_validator.Validate(Metadata.Model));
}
private IEnumerable<ModelValidationResult> ConvertResults(IEnumerable<ValidationResult> validationResults)
{
if (validationResults != null)
{
foreach (ValidationResult validationResult in validationResults)
{
if (validationResult.NestedValidationResults != null)
{
foreach (ModelValidationResult result in ConvertResults(validationResult.NestedValidationResults))
{
yield return result;
}
}
yield return new ModelValidationResult
{
Message = validationResult.Message,
MemberName = validationResult.Key
};
}
}
}
}
And now create a EnterpriseLibraryValidatorProvider
using System.Collections.Generic;
using System.Web.Mvc;
using Microsoft.Practices.EnterpriseLibrary.Validation;
public class EnterpriseLibraryValidatorProvider : ModelValidatorProvider {
public override IEnumerable<ModelValidator> GetValidators(ModelMetadata metadata, ControllerContext context) {
Validator validator = ValidationFactory.CreateValidator(metadata.ModelType);
if (validator != null) {
yield return new EnterpriseLibraryValidatorWrapper(metadata, context, validator);
}
}
}
Now add it to the Application_Start() method in the global.asax
ModelValidatorProviders.Providers.Add(new EnterpriseLibraryValidatorProvider());
The Enterprise Library validation can be used now. Here’s a example:
using System;
using Microsoft.Practices.EnterpriseLibrary.Validation.Validators;
namespace MvcEL6Validation.Models
{
public class HomeDataModelEnterpriseLibrary
{
[RangeValidator(10, RangeBoundaryType.Inclusive, 110, RangeBoundaryType.Inclusive)]
public int ValInt1 { get; set; }
public int? ValInt2 { get; set; }
[ContainsCharactersValidator("hello", ContainsCharacters.All)]
[ContainsCharactersValidator("world", ContainsCharacters.All)]
public string ValString1 { get; set; }
[StringLengthValidator(5, 20)]
public string ValString2 { get; set; }
[NotNullValidator]
public double ValDouble1 { get; set; }
public double? ValDouble2 { get; set; }
[RelativeDateTimeValidator(-120, DateTimeUnit.Year, -18, DateTimeUnit.Year, MessageTemplate = "Must be 18 years or older.")]
public DateTime ValDateTime1 { get; set; }
[RelativeDateTimeValidator(-120, DateTimeUnit.Year, -18, DateTimeUnit.Year, MessageTemplate = "Must be 18 years or older.")]
public DateTime? ValDateTime2 { get; set; }
}
}
Client side Validation should be disabled as no client validation is provided.
HtmlHelper.ClientValidationEnabled = false;
HtmlHelper.UnobtrusiveJavaScriptEnabled = false;


I am using EntLib 5 && MVC3. Your code compile but isn’t working. Is mandatory Entñlib v6.0?
Thanks
Hi Gabriel
Could be EL5 to EL6 have some big changes, but I don’t know the changes in the Validation module or the dependencies.
greetings Damien