Я решил эту проблему, зарегистрировав блок клиентского скрипта, который обновляет итоговое содержимое проверки.Я использовал jQuery для этого:
private void DisplayCustomValidationMessage(CustomValidator cv, ValidationSummary vs)
{
if ((cv == null) || (vs == null)) return;
Type csType = this.GetType();
if (ClientScript.IsClientScriptBlockRegistered(csType, cv.ID)) return;
StringBuilder sb = new StringBuilder(@"<script type='text/javascript'>");
sb.Append(@"$(function () {");
sb.Append(@"var $vs = $('#" + vs.ClientID + "');");
sb.Append(@"if($vs.find('ul').length){");
sb.Append(@"$vs.find('ul').append('<li>" + cv.ErrorMessage + "</li>');");
sb.Append(@"}else{");
sb.Append(@"$vs.html('Fehlerhafte Eingabe(n):<ul><li>" + cv.ErrorMessage + "</li></ul>'); }");
sb.Append(@"$vs.css('display', 'block');");
sb.Append(@"});");
sb.Append(@"</script>");
ClientScript.RegisterClientScriptBlock(csType, cv.ID, sb.ToString());
}
Метод должен вызываться в случае сбоя проверки:
protected void cvYourCustomValidator_ServerValidate(object source, ServerValidateEventArgs args)
{
args.IsValid = YourCustomValidationMethod();
if (!args.IsValid)
{
DisplayCustomValidationMessage((CustomValidator) source, vsYourValidationSummaryControl);
}
}