Muitas vezes, num formulário web, temos necessidade de notificar o utilizador com determinada mensagem que não faz parte dos validators que usamos no formulário. Nesse caso, o ideal seria que essa mensagem aparecesse na zona do “Validation Summary“.
Para vos dar um exemplo, imaginem que têm uma página de registo de utilizador, e não podem existir utilizadores com o mesmo username. A não ser que já estejamos a utilizar AJAX, não conseguimos saber se já existe um utilizador com o username inserido, enquanto o formulário não for submetido. Depois da validação efectuada do lado do servidor, no caso de já existir um utilizador com o username fornecido, queremos mostrar a mensagem de utilizador já existente no mesmo sitio onde apareceram todas as outras mensagens de validação.
Todos os Validators implementam a interface IValidator, pelo que para adicionarmos uma mensagem ao Validation Summary, necessitamos de criar uma classe que também implemente esta interface.
A classe Page detém uma lista de Validators, à qual nós vamos adicionar o nosso, conseguindo assim apresentar a mensagem desejada no “Validation Summary”.
Vamos então criar a classe ValidationSummaryMessage
1: using System.Web.UI; 2: Â 3: /// <summary> 4: /// Class that implements IValidator, 5: /// enable adding messages to Validation Summary 6: /// </summary> 7: /// <example> 8: /// if(condition not satisfied) 9: /// Page.Validators.Add(new ValidationSummaryMessage(”Error Message”)); 10: /// </example> 11: public class ValidationSummaryMessage : IValidator 12: { 13: private string validationMessage; 14: Â 15: public ValidationSummaryMessage(string message) 16: { 17: validationMessage = message; 18: } 19: Â 20: #region IValidator Members 21: Â 22: public string ErrorMessage 23: { 24: get { return validationMessage; } 25: set { validationMessage = value; } 26: } 27: Â 28: public bool IsValid 29: { 30: //Allways return false to cause Page.IsValid = false 31: get { return false; } 32: set { } 33: } 34: Â 35: public void Validate(){} 36: Â 37: #endregion 38: }
Agora que já temos a nossa classe de Mensagens, podemos utilizá-la para adicionar mensagens ao Validation Summary, adicionando uma instância da classe ao grupo de validators da página:
1: if (TextBox1.Text == “erro”) 2: Page.Validators.Add((IValidator)new ValidationSummaryMessage(“Não pode submeter a palavra ‘erro’”));
Sempre que a condição anterior se verificar, a mensagem é adicionada ao Validation Summary da página.
Podem efectuar download do projecto de teste através do link seguinte:
http://www.megaupload.com/?d=9R1K3ET6Â
Se tiverem alguma dúvida ou sugestão, deixem um comentário ou enviem um e-mail para blog.istomesmo@gmail.com .




Fevereiro 20th, 2008 at 20:28
[...] Como adicionar mensagens a um Validation Summary « Isto Mesmo Todos os Validators implementam a interface IValidator, pelo que para adicionarmos uma mensagem ao Validation Summary, necessitamos de criar uma classe que também implemente esta interface. (tags: istomesmo.wordpress.com 2008 mes1 dia20 at_home validation ASP.NET validation_summary blog_post) [...]