O summary validator se destina a páginas que possuem diversos controles para serem validados e uma parte da página é reservada para exibir essas mensagens.
A validação aqui feita é complexa. Você deve ou não escolher um dos cartões (Mastercard ou Visa)
Você deverá digitar algo no campo 'Número do Cartão'
Clique no botão 'Validar' para realizar a validação dos campos
Exemplo de código:
<form id="form1" runat="server">
<table cellpadding="10">
<tr>
<td>
<table style="background-color: #eeeeee; padding: 10px">
<tr>
<td colspan="3">
<b>Informações do Cartão de Crédito</b>
</td>
</tr>
<tr>
<td align="right">Tipo do Cartão:
</td>
<td>
<asp:RadioButtonList ID="RadioButtonList1" RepeatLayout="Flow" runat="server">
<asp:ListItem>MasterCard</asp:ListItem>
<asp:ListItem>Visa</asp:ListItem>
</asp:RadioButtonList>
</td>
<td align="center" rowspan="1">
<asp:RequiredFieldValidator
ID="RequiredFieldValidator1"
ControlToValidate="RadioButtonList1"
ErrorMessage="Tipo do Cartão. "
Display="Static"
InitialValue=""
Width="100%"
runat="server">
*
</asp:RequiredFieldValidator>
</td>
</tr>
<tr>
<td align="right">Número do Cartão:
</td>
<td>
<asp:TextBox ID="TextBox1" runat="server" />
</td>
<td>
<asp:RequiredFieldValidator
ID="RequiredFieldValidator2"
ControlToValidate="TextBox1"
ErrorMessage="Número do Cartão. "
Display="Static"
Width="100%"
runat="server">
*
</asp:RequiredFieldValidator>
</td>
</tr>
<tr>
<td></td>
<td>
<asp:Button ID="Button1" Text="Validar" runat="server" />
</td>
<td></td>
</tr>
</table>
</td>
<td valign="top">
<table cellpadding="20">
<tr>
<td>
<asp:ValidationSummary
ID="valSum"
DisplayMode="BulletList"
runat="server"
HeaderText="Você deve digitar o valor dos seguintes campos:"
Font-Names="verdana"
Font-Size="12" />
</td>
</tr>
</table>
</td>
</tr>
</table>
</form>
</div>
Não é necessário configurar AutoEventWireup="true" no @Page da página porque o que irá disparar o evento de validação é o click no botão 'Validar'.
Importante 2 : O validator apenas coloca ou não a mensagem de erro mas não toma nenhuma atitude.
A propriedade Text do validator tem a mensagem de erro ou não e é ela que devemos utilizar
para tomar decisões como o submit da página. Podemos também verficar o valor do parametro Page.IsValid
no submit da página mas isto ocorre quando a página já foi enviada ao servidor.
Note que logo a seguir de cada controle a ser validado temos o validador do campo.
No final de todos os campos da páginas reservamos uma td só para exibir o resultado da validação : asp:ValidationSummary
Nos validadores temos o parâmetro Display="Static" para definir que desejamos reservar espaço para a exibição da critica ( no caso é um asterisco ) do campo. Se fosse 'Dynamic' o espaço não seria reservado e ao exibir a critica poderia haver um deslocamento dos itens na tela.
No exemplo o validador apenas verifica se foi clicado em algum dos cartões e se no campo 'Número do Cartão' foi digitado algo mas sem qualquer critica ou validação do número do cartão digitado.
Um fato importante a citar sobre o CompareValidator é que ele não é um controle ASPNET mas sim AJAX e com isto funciona em páginas asp, aspx, html, etc.
No momento o botão validar está apenas disparando o evento de validação mas não está dando submit no form.
No caso de termos que trabalhar com a validação em conjunto com o botão de submit faríamos o seguinte :
<asp:Button ID="btnEnviar" runat="server" Text="Enviar" OnClick="btnEnviar_Click" />
Protected Sub btnEnviar_Click(sender As Object, e As EventArgs)
Page.Validate()
If Page.IsValid Then
lblMsg.Text = "Texto validado...seguindo com submit dos dados"
End If
Se o validador aprovar o parâmetro Page.IsValid será true. Caso contrário será falso e o processo nada fará mas o validador automaticamente colocará a mensagem de erro de validação na tela.