ASP.NET – Adicionando mensagens do ValidationSummary

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!

Comentários

comentários