ASP.NET - Definindo o botão padrão para submeter um formulário
Suponha o seguinte cenário:
- Você possui uma página .aspx que esta exibindo um formulário que contém dois botões : Enviar e Cancelar.
- O usuário pressiona a tecla ENTER
Pergunta : Qual dos botões será acionado ? (Você tem 5 segundos para responder...)
Se você ainda esta pensando este artigo veio para esclarecer as suas dúvidas e mostrar como definir o botão padrão para submeter o formulário em um formulário com mais de um botão quando o usuário pressionar a tecla ENTER.
Se você fosse tentar realizar esta tarefa na ASP ou ASP.NET 1.1 teria que escrever um código JavaScript do lado do cliente que fosse executado quando a página fosse carregada no Browser. O script deveria capturar o evento KeyPress e deveria verificar se a tecla pressionada é a tecla ENTER para realizar um postback para o formulário. Pode parecer simples mas para complicar o código JavaScript poderia ser diferente para cada versão de Navegador.
Este pesadelo é passado para quem esta usando a ASP.NET 2.0.
A ASP.NET 2.0 apresenta entre suas inúmeras novidades uma propriedade chamada DefaultButton para o objeto Form que permite que você defina o botão que será usado como padrão quando o usuário pressionar a tecla ENTER. A ASP.NET gera o script do lado do cliente para você.
Como exemplo , supondo a existência de um botão de Login em uma página .aspx temos:
Page.Form.DefaultButton = btnLogin.UniqueID
Para implementar esta funcionalidade você deve levar em conta os seguintes fatores:
Se estas orientações não forem seguidas uma exceção será lançada quando a página for exibida indicando que o botão padrão precisa ser um controle que implementa IButtonControl.
Colocando a teoria em prática:
Abra o Visual Web Developer e crie um novo Web Site. Eu dei o nome aspNetForms ao projeto.
A seguir selecione a página default.aspx e ative o modo Design. Inclua na página uma tabela e dois botões de comando conforme o leiaute da figura abaixo:
A seguir inclua o seguinte código no arquivo code-behind default.aspx.vb
Partial
Class _Default Inherits System.Web.UI.Page Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load Page.Form.DefaultButton = btnLogin.UniqueID End Sub Protected Sub btnCancela_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnCancela.Click Response.Redirect("cancela.aspx") End Sub Protected Sub btnLogin_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnLogin.Click Response.Redirect("Login.aspx") End Sub End Class |
Executando o projeto no servidor ASP.NET obtemos o seguinte resultado:
A página
default.aspx. Ao pressionar ENTER o botão Login que esta definido como o botão padrão será acionado executando o código: Response.Redirect("Login.aspx") |
|
A página login.aspx
sendo exibida. Obs: Deixo a criação da página cancela.aspx a seu cargo. |
Eu sei, é apenas ASP.NET, mas eu gosto...
José Carlos Macoratti