One approach would be (even for the lazy ones :-) ) to iterate the validators and create your own Html message from the backend:
StringBuilder myCustomHtml = new StringBuilder();
foreach (Control validator in this.Page.Validators)
{
IValidator currentValidator = validator as IValidator;
if (currentValidator != null && !currentValidator.IsValid)
{
myCustomHtml.AppendFormat("Bla Foo is missing");
}
}
Or something like this (haven't tested). It should give you full control, though you should be aware that the control order in Page.Validators is determined by the construction of the control tree during the design. The downside is that a postback is required for this to work.
Another approach would be to capture the event in jquery and add your custom tags and text there.
However, searching SO I found this solution: inherit from asp:validationsummary.