Os sites devem prover aos usuarios formas simples de navegacao. Os desenvolvedores devem controlar como o usuario navega em seu site e ate mesmo as execucoes de PostBack em suas paginas. Esta licao mostra ferramentas que auxiliam nessas tarefas.Is Page Navigation Necessary?Navegacao entre paginas e o processo de passagem de uma pagina para outra. Entretanto com alguns recursos que temos atualmente como Asynchronous JavaScript e XML (AJAX), voce pode executar varios processos na mesma pagina, sem a necessidade de ficar trocando de paginas. Voce nao precisa mais ficar trocando de paginas para executar algo, pode fazer isso com um PostBack para o servidor ou ate mesmo do lado do cliente. Claro que existem cenarios que sera necessario o armazenamento em banco de dados ou coisas do tipos.Mas e importante que saiba que hoje dependendo do cenario pode fugir de metodologias antigas de navegacao entre paginas para gerenciar processos.Choosing a Method to Navigate PagesO asp.net possui algumas maneiras de navegar entre as paginas. E bom conhecer detalhamente as diferencas entre cada maneira. Veja as opcoes disponiveis:Client-side navigation: um codigo cliente permite que seja solicitado uma nova pagina. Este codigo solicita uma nova pagina com base no evento de um hyperlink ou a execucao de um JavaScript;Cross-page posting: um controle e um formulario sao configurados para enviar um PostBack para uma pagina diferente da que faz a solicitacao;Client-side browser redirect: um codigo servidor, envia uma mensagem ao navegador solicitando uma pagina diferente;Server-side transfer: um codigo servidor solicita uma transferencia para uma pagina diferente;Client-Side NavigationA forma mais simples de permitir a navegacao entre as paginas do seu site e utilizar um controle de Hyperlink, basta definir a propriedade NavigateUrl com o destino do link. O controle asp.net Hyperlink quando renderizado, gera o elemento html <a>, veja o exemplo:HyperLink Control: Source<asp:HyperLink ID="HyperLink1"runat="server" NavigateUrl="~/NavigateTest2.aspx">Goto NavigateTest2</asp:HyperLink>HyperLink Control: Rendered HTML<a id="HyperLink1" href="NavigateTest2.aspx">Goto NavigateTest2</a>No exemplo acima quando este link for clicado o navegador requisitara a pagina NavigateTest2.aspx, neste caso nao estamos passando nenhum informacao de dados na URL, mas podemos utilizar a querystring para fornecer algumas informacoes caso necessario.Outra forma de se fazer o mesmo processo e via javascript. O objeto document representa o formulario atual no javascript. Podemos definir a propriedade location para requisitar a nova pagina. Veja o exemplo:<input id="Button1" type="button" value="Goto NavigateTest2" onclick="return Button1_onclick()" />Quando o botao for clicado ele ira acionar uma funcao javascript chamada Button1_onclick(), esta funcao deve ser criada dentro da tag <head>:<script language="javascript" type="text/javascript"> function Button1_onclick() { document.location="NavigateTest2.aspx"; }</script>Cross-Page Posting Cross-Page Posting, ou postagem entra paginas e frequentamente usado em cenarios onde por exemplo existem 2 paginas, a primeira com um formulario e a segunda utilizada para exibir os dados. Na primeira basta definir a propriedade PostBackUrl de um botao com o nome da segunda pagina, chamada de pagina de processamento. Esta pagina recebe o PostBack com os dados da primeira pagina para executar o processamento.Nesta pagina de processamento e possivel validar se ocorreu o PostBack na pagina anterior enviando uma colecao de dados. Atraves da propriedade Page.PreviousPage, voce valida se ocorreu ou nao o PostBack, veja o exemplo a baixo:protected void Page_Load(object