Faz tempo que tinha essa necessidade. Já que utilizamos o ValitadionSummary como um concentrador de mensagens de erro, porque não mantê-lo, inclusive para mostrar nossas próprias mensagens, além daquelas que os controles de validação do ASP.NET WebForms nos fornece?
Haviam algumas opções a isso, como criar seus próprios validators, utilizar o CustomValidator em alguns casos ou até um BulletList apontando para o mesmo CssClass no ValitadionSummary para dar a impressão de se tratar da mesma lista. Bom, nenhuma delas era uma solução completa, já que cheiravam a POG.
Bom, uma navegada na internet é o código abaixo me é apresentado:
public class ValidationError : IValidator { private ValidationError(string message) { ErrorMessage = message; IsValid = false; } public string ErrorMessage { get; set; } public bool IsValid { get; set; } public void Validate() { // no action required } public static void Display(string message) { Page currentPage = HttpContext.Current.Handler as Page; currentPage.Validators.Add(new ValidationError(message)); } } |
Crie esta classe em um local acessível ao seu projeto Web. Agora, no momento em que desejar adicionar uma mensagem, basta usar a seguinte linha de código:
ValidationError.Display("Oops, Aconteceu algum erro."); |
Heresia ou não, quase tão simples quando ativar um MessageBox, não? Quando esse código é chamado, o efeito é o mesmo do que tivesse ativado uma função de um CustomValidator (sem client side) e a mensagem aparecerá dentro do ValidationSummary. Mais explicações técincas e créditos no post do autor da proeza:
http://blogs.msdn.com/b/simonince/archive/2008/02/28/adding-messages-to-a-validation-summary.aspx
Bom proveito!