|
Validation Groups
Nas versões 1.x do ASP.NET temos um grande problema quando o assunto são os controles de validação. Isso ocorre quando temos mais de um botão que submete o formulário ao servidor, ou melhor, temos "ilhas" de controles em um mesmo WebForm (ASPX), que são independentes um dos outros, onde cada um deles trata informações diferentes.
O problema é quando pressionamos qualquer um destes botões, todos os validadores são disparados, impossibilitando o usuário de continuar o processo, obrigando-o a preencher todo o formulário para prosseguir.
Isso foi pensado melhor e resolvido na versão 2.0 do ASP.NET e a Microsoft incluiu os chamados Validation Groups que é exatamente o tema deste artigo. Como podemos ver na Figura 1 logo abaixo, o problema que acontece na versão 1.x, todos os validators são disparados, mesmo os que supostamente não deveriam ocorrer.
 |
| Figura 1 - O problema dos validadores da versão 1.x. |
Como podemos reparar, quando pressionamos qualquer um dos botões, o formulário como um todo é tratato, e todos os validadores onde a consistência falha, são disparados.
Agora os controles tem uma nova propriedade, chamada ValidationGroup que receberá uma string que identificará o "Grupo" a ser validado pelo botão que desejar, e assim, tratar independentemente "ilhas" de controles nos formulários. Abaixo veremos o código HTML que exemplifica o uso dos Validation Groups:
| 1 |
| 2 |
| 3 |
| 4 |
| 5 |
| 6 |
| 7 |
| 8 |
| 9 |
| 10 |
| 11 |
| 12 |
| 13 |
| 14 |
| 15 |
| 16 |
| 17 |
| 18 |
| 19 |
| 20 |
| 21 |
| 22 |
| 23 |
| 24 |
| 25 |
| 26 |
| 27 |
| 28 |
| 29 |
| 30 |
| 31 |
| 32 |
| 33 |
| 34 |
| 35 |
| 36 |
| 37 |
| 38 |
| 39 |
| 40 |
| 41 |
| 42 |
| 43 |
|
|
| |
| Nome 1: |
| <asp:TextBox |
| id="TextBox1" |
| runat="server"> |
| </asp:TextBox> |
|
| <asp:RequiredFieldValidator |
| id="RequiredFieldValidator1" |
| runat="server" |
| ErrorMessage="Digite o Nome 1" |
| ControlToValidate="TextBox1" |
| SetFocusOnError="True" |
| ValidationGroup="Grupo1">Digite o Nome 1</asp:RequiredFieldValidator> |
|
| <asp:Button |
| id="Button1" |
| runat="server" |
| Text="Grupo 1" |
| ValidationGroup="Grupo1"> |
| </asp:Button> |
|
| <HR> |
|
| Nome 2: |
| <asp:TextBox |
| id="Textbox2" |
| runat="server"> |
| </asp:TextBox> |
|
| <asp:RequiredFieldValidator |
| id="Requiredfieldvalidator2" |
| runat="server" |
| ErrorMessage="Digite o Nome 2" |
| ControlToValidate="TextBox2" |
| SetFocusOnError="True" |
| ValidationGroup="Grupo2">Digite o Nome 2</asp:RequiredFieldValidator> |
|
| <asp:Button |
| id="Button2" |
| runat="server" |
| Text="Grupo 2" |
| ValidationGroup="Grupo2"> |
| </asp:Button> |
|
|
|
Código 1 - Definindo o ValidationGroup.
|
Podemos reparar que para "amarrar" os controles, inclusive os validadores à serem validados por um botão qualquer, definimos uma string que baseado nela, o botão apenas verificará a consistência dos validadores que também são do mesmo grupo.
Outra característica da versão 2.0 do ASP.NET, é a propriedade SetFocusOnError. Quando esta propriedade esta definida como True e a consistência desse validador falhar, o foco é direcionado automaticamente para o controle que está associado ao mesmo.
CONCLUSÃO: Os validadores são uma forma elegante de tratarmos formulários em aplicações ASP.NET evitando assim, códigos Javascript que seríamos obrigados a digitar para obter o mesmo resultado. Apesar disso, na versão 1.x tínhamos o problema que vimos acima, e que, nesta nova versão foi solucionado com a adição da propriedade ValidationGroup.
|