Neste post demonstro duas formas para adicionar mensagens de erro no ValidationSummary do ASP.NET via C# (codebehind).
1ª Forma
Nesta forma basta adicionar o ValidationSummary na página onde se deseja apresentar as mensagens de erro e também um CustomValidator, que será utilizado como “coringa” para as mensagens de erro que irão requerer informação junto ao usuário do sistema.
Repare que para o CustomValidator, a propriedade Display foi definida como “None” e a propriedade EnableClientScript tanto do ValidationSummary quanto do CustomValidator foram definidas como “false“. Veja o techo de código abaixo:
... <asp:ValidationSummary ID="vlsMensagens" runat="server" EnableClientScript="False" ForeColor="Red" /> <asp:CustomValidator ID="cstValidator" runat="server" Display="None" EnableClientScript="False" ErrorMessage="CustomValidator"></asp:CustomValidator> ...
Assim, no código em C# basta realizar a seguinte chamada para adicionar a mensagem de erro ao ValidationSummary:
... cstValidator.ErrorMessage = txtMensagem.Text; cstValidator.IsValid = false; ...
2ª Forma (acho essa melhor)
Na segunda situação, criei uma classe chamada MsgSummary que herda de IValidator, dessa forma, podendo acrescentar mensagens de erro no ValidationSummary de uma determinada página sem a necessidade de acrescentar o CustomValidator junto a ele. Veja como ficou:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
/// <summary>
/// Classe utilizada para acrescentar mensagens em ValidationSummary
/// </summary>
public class MsgSummary : IValidator
{
string _mensagem;
public static void AddMsg(string mensagem, Page pagina)
{
MsgSummary msg = new MsgSummary(mensagem);
pagina.Validators.Add(msg);
}
private MsgSummary(string mensagem)
{
_mensagem = mensagem;
}
public string ErrorMessage
{
get { return _mensagem; }
set { }
}
public bool IsValid
{
get { return false; }
set { }
}
public void Validate()
{ }
}
Agora, veja um exemplo de como apresentar a mensagem desejada no ValidationSummary de uma determinada página:
...
double nro;
try
{
nro = double.Parse("Vai dar erro na conversão");
}
catch(Exception ex)
{
MsgSummary.AddMsg(string.Format("Erro provocado: {0}",ex.Message), this);
}
...
Espero que este post ajude a outras pessoas.
Um grande abraço,
Eduardo Henrique Rizo
[twitter-follow screen_name='eduardorizo' show_count='yes']

Cara eu precisava disso!
Muito obrigado!