Simple validation of properties in EPiServer 6 using DataAnnotations with PageTypeBuilder

In EPiServer 7 you can easily add validation to pagetype properties with DataAnnotations attribute, like this:

[RegularExpression(@"^([A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,9})$"    , ErrorMessage = "Must be valid email address")]

In EPiServer 6 you can create a custom property (involves creating some classes and messing up the db sometimes), or hook up onto global page save validation event and check if property x is valid and return e.message. (http://blog.bigfinger.se/2010/4/26/simple-validation-of-propertyvalues-in-episerver-cms-6.aspx)

Or, you can combine the usage of hooking up onto global pagedata validation with DataAnnotaions support, then you in fact
have something similar to the EPiServer 7 way with DataAnnotations support. Just go here: Validating page data with Data Annotations.
Thank you Stefan Forsberg.

PS:
the GlobalPageValidation_Validators event can be hooked onto through Global.asax.cs like this:

public class Global : EPiServer.Global
{
protected void Application_Start(Object sender, EventArgs e)
{

//Enables validation for pagetype properties with DataAnnotations
GlobalPageValidation.Validators += GlobalPageValidation_Validators;
}

void GlobalPageValidation_Validators(object sender, PageValidateEventArgs e)
{
PageDataValidator validator = new PageDataValidator();
var errors = validator.GetErrors(e.Page).ToList();

if (errors.Any())
{
e.IsValid = false;
foreach (var error in errors)
{
e.ErrorMessage += string.Format("{0} <br />", error);
}

}
}

Also added an <br /> in case of several errors.
Validation Error message looks like this in EPiServer edit mode:

ScreenShot808
Its a bit on the simple side; remember to include which field its connected to in the errortext, no indication is shown next to the particular field.

Now you can just use DataAnnotations validation attributes, like these:

[RegularExpression]
[Required]
[StringLength]
[Range]

Inherit System.ComponentModel.DataAnnotations  and override IsValid to do something more complicated with your validations.

Twenty C# Questions Explained

​Are you a developer with coding questions? Many new and experienced developers visit Stackoverflow.com to find solutions and to help others resolve their computing questions and issues. This training session focuses on 20 of the top questions surrounding the C# language, based on number of views and votes on stackoverflow. Watch this session, and get your questions answered.

via Twenty C# Questions Explained.