Desenvolvimento - ASP. NETFeed de artigos deste autor

ASP.NET - Validation Groups (controles de validação)
por Israel Aéce



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.
Israel Aéce

Israel Aéce - Especialista em tecnologias de desenvolvimento Microsoft, atua como desenvolvedor de aplicações para o mercado financeiro utilizando a plataforma .NET. Como instrutor Microsoft, leciona sobre o desenvolvimento de aplicações .NET. É palestrante em diversos eventos Microsoft no Brasil e autor de diversos artigos que podem ser lidos a partir de seu site http://www.israelaece.com/. Possui as seguintes credenciais: MVP (Connected System Developer), MCP, MCAD, MCTS (Web, Windows, Distributed, ASP.NET 3.5, ADO.NET 3.5, Windows Forms 3.5 e WCF), MCPD (Web, Windows, Enterprise, ASP.NET 3.5 e Windows 3.5) e MCT.


Comentários

blog comments powered by Disqus