ASP.NET BUTTON: PostBackUrl e OnClientClick

Salve desenvolvedores,

Aqui vai uma dica interessante para usarmos as funções OnClientClick e PostBackUrl ao mesmo tempo em um ASP.NET Button. No caso, queremos fazer uma validação no cliente para depois postarmos as informações para outra página (Cross-page Posting), que nesse caso, é postado de forma prática, com forte tipagem e também com segurança. Depois estarei falando mais sobre transferencia de dados entre páginas.

Temos o seguinte botão:

<asp:Button ID=”btnEnviar” runat=”server” Text=”Enviar” OnClientClick=”return confirm(’BRASILDOTNET?’);” OnClick=”btnEnviar_Click” PostBackUrl=”~/Pagina4.aspx” />

Porém, clicando em OK ou CANCEL, ocorre o evento normal de postagem do ASP.NET, é postado para a própria página. Se fomos analisar o HTML gerado:

<input type=”submit” name=”Button1″ value=”Enviar” onclick=”return confirm(’BRASILDOTNET?’);WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(”Button1″, “”, false, “”, “Pagina4.aspx”, false, false))” id=”Button1″ />

Então vemos que confirmando ou não, o evento do Cross-page posting é chamado e o post é efetuado. Nesse caso, testando no IE 7.0, o post ocorre para a mesma páginar.

Para resolver, adicione o seguinte código:

OnClientClick=”if (!confirm(’BRASILDOTNET?’)) return false;”

E pronto, o Cross-page posting é executado normalmente. No caso, em vez da função confirm, poderia ser uma função personalizada retornando true ou false para a validação desejada.

Abraços,

Enviar por e-mail. Hits para esta publicação: 1377.

1 Comentário »

  1. Eric disse,

    25 de Março de 2008 @ 11:13

    Muito bom o artigo!..

    obrigado!

RSS para comentários nesta publicação · URI para link desta publicação:

Deixe um Comentário