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.

Chrome Web Store – James by Logic Agent (debug Google Analytics script)

James is your personal debugging agent for Analytic tags.

We currently support Google Analytics, Google Universal Analytics, Adobe SiteCatalyst, IBM Coremetrics, WebTrends and a lot more. Tags gets updated dynamically all the time.

It will break down all the variable being sent back to the analytic vendor.

Chrome Web Store – James by Logic Agent.