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!