Criando um PostBack

Ramon Durães (e-mail) possui larga experiência em tecnologia Microsoft. Microsoft Most Valuable Professional (MVP), Associate Mentor na 2pc Professional Computing (http://www.2pc.com.br/), onde atua como Arquiteto de soluções. Fundador do grupo de usuários Mutex (http://www.mutex.com.br/). Escreve artigos e ministra treinamentos, além de realizar palestras nos maiores eventos do Brasil.

O ASP.NET mudou o conceito dos tradicionais links que apontavam para uma página de destino e agora passaram a realizar "PostBack", enviando a página para o servidor e gerando um evento que é tratado no código. Com esse recurso, os controles do ASP.NET tem suporte nativo ao modelo de eventos. Esse artigo vai esclarecer esse recurso para você que deseja criar um componente ou um novo link dinamicamente e precisa gerar um PostBack e manter a persistência da página.

Nesse artigo vamos utilizar o método GetPostBackEventReference em conjunto com classe PostBackOptions, que vai nos retornar o código JavaScript responsável pelo envio do PostBack para o servidor. Esse PostBack que você criar já tem suporte ao Atlas Framework (AJAX), basta que se coloque o resultado dentro de uma área UpdatePanel.

Crie uma nova página e adicione um Label e um Hyperlink. Depois, confira o código apresentado na Listagem 01.

PostBack
public partial class _Default : System.Web.UI.Page,System.Web.UI.IPostBackEventHandler

{
protected void Page_Load(object sender, EventArgs e)
{

// Exemplo para HyperLink
HyperLink1.NavigateUrl = RetornaPostBackUrl("Parametro",false );

//Exemplo para Link href em html
Page.Controls.Add(new LiteralControl("<a href=" + RetornaPostBackUrl("Dinamico", false) + ">Link html com postback</a>"));

}

#region IPostBackEventHandler Members

public void RaisePostBackEvent(string eventArgument)
{
if (eventArgument.StartsWith("#Post#"))
{
Label1.Text = "PostBack:" +eventArgument + " em " + System.DateTime.Now.ToString();
}
}

#endregion

//Esse metodo retorna o PostBack
protected string RetornaPostBackUrl(String Parametro, bool ValidarCampos)

{
// // Create a new PostBackOptions object and set its properties.

PostBackOptions myPostBackOptions = new PostBackOptions(this);
myPostBackOptions.AutoPostBack = false;
myPostBackOptions.RequiresJavaScriptProtocol = true;
myPostBackOptions.PerformValidation = ValidarCampos;
myPostBackOptions.Argument = "#Post#" + Parametro;

return Page.ClientScript.GetPostBackEventReference(myPostBackOptions);

}

}

Listagem 01 - Código para realização de PostBack

Conferindo a Listagem 01, você vai observar um exemplo muito simples e de fácil compreensão que pode ser utilizado em todas situações. Primeiro adicionamos a interface System.Web.UI.IPostBackEventHandler a nossa classe que nos obriga a implementar o método RaisePostBackEvent. Toda vez que o usuário clicar em nosso link (com postback), vai ser disparado esse método no servidor. Depois, criamos o método RetornaPostBackUrl que tem objetivo apenas de facilitar a utilização do GetPostBackEventReference e da classe PostBackOptions. Finalmente, no método Page_Load você vai conferir dois exemplos, primeiramente usando HyperLink e posteriormente utilizando o próprio link do html.

Finalizando

Depois de receber vários e-mails, resolvi tocar esse assunto que apesar de ser simples ainda é pouco utilizado. Creio que a partir de agora, muitos links serão modificados.

O que você gostaria saber? Aguardo seu comentário! Ele é muito importante. Participe!!! Até próximo artigo!