sender, EventArgs e){ if(Page.PreviousPage == null) { LabelData.Text = "No previous page in post"; } else { LabelData.Text = Server.HtmlEncode(((TextBox)PreviousPage.FindControl("TextBox1")).Text); }}Accessing Posted Data as Strongly Typed DataE possivel acessar propriedades com tipos definidos entre paginas, sem a necessidade de chamar o FindControl ou executar alguma conversao. Voce pode criar uma propriedade publica na sua primeira pagina que tera seu valor acessado pela segunda pagina. Alem de criar esta propriedade na primeira pagina, so e necessario adicionar a diretira PreviousPageType na segunda pagina, a pagina de processamento.Imaginando o mesmo cenario do exemplo anterior, na primeira pagina chamada DataCollection.aspx temos um textbox e um botao onde sua propriedade PostBackUrl foi definida como "~/ProcessingPage.aspx". Crie a seguinte propriedade na primeira pagina:public string PageData{ get { return TextBox1.Text; }}Para ter acesso a esta propriedade na pagina de processamento, adicionar a diretiva PreviousPageType, como a seguir: <%@ PreviousPageType VirtualPath="~/ProcessingPage.aspx" %>Na pagina de processamento temos uma label que ira exibir a propriedade da pagina anterior:protected void Page_Load(object sender, EventArgs e){ if (PreviousPage == null) { LabelData.Text = "No previous page in post"; } else { LabelData.Text = PreviousPage.PageData; }} Acessando a propriedade PreviousPage.PageData conseguira ter acesso ao valor do textbox da pagina anterior. Desta forma e possivel declarar outras propriedade, fugindo da necessidade de conversoes ou a chamada ao FindControl.Client-Side Browser RedirectEste e o famoso Response.Redirect que usamos. Diversas vezes precisamos redirecionar o usuario a uma outra pagina com base em uma acao que ele executou no site. O objeto Page.Response contem o metodo Redirect que faz isso.O Redirect e executado do lado do servidor, porem nao e um PostBack, ele ocorre apos o PostBack. Considere o exemplo que voce possui uma pagina SubmitOrder.aspx que contem um botao que ira ocasionar um PostBack no servidor, apos este PostBack voce ira redirecionar o usuario a pagina OrderDetails.aspxprotected void ButtonSubmit_Click(object sender, EventArgs e){ Response.Redirect("~/OrderDetails.aspx");}O redirecionamento ocorre por que e enviado para o browser o codigo de resposta 302 junto com o novo endereco url. Assim a url do navegador e alterada e o usuario e redirecionado para a nova pagina. E necessario utilizar em momento certos, pois como e executado do lado do servidor, existe um "custo" para realizar esta operacao.A propriedade PreviousPage nao e alimentado neste caso, para acessar dados da pagina anterior e necessario utilizar outras fomas como armazenar em Cookie, variaveis de Sessao ou via QueryString.Server-Side TransferVoce pode usar a Server.Transfer para forcar o Asp.Net a processar uma pagina diferente da informada na URL sem a necessidade de uma nova requisicao no browser. Por exemplo, se voce acessa uma pagina page1.aspx e nessa page1.aspx ela executa Page.Server.Transfer("page2.aspx") o Asp.Net ira processar e exibir a pagina page2.aspx, porem para o usario isso sera invisivel e na URL do navegador continuara aparecendo page1.aspx. Exemplo de codigo:protected void Button1_Click(object sender, EventArgs e){ Server.Transfer("~/OrderProcessing.aspx", false);}O metodo Transfer possui uma sobrecarga que possui um parametro boleano chamado preserveForm. O valor informado para este parametro indica se voce quer manter seu formulario e os dados de query string. E possivel acessar a propriedade PreviousPage durante a transferencia. Se ocorrer alguma excessao na nova