ID do artigo: 913721 - Última revisão: quinta-feira, 22 de novembro de 2007 - Revisão: 1.4

Como implementar os recursos de navegação inteligente no ASP.NET 2.0

Dica do SistemaEste artigo aplica-se a um sistema operativo diferente do que está a utilizar. Foi desactivado o conteúdo do artigo, que pode não ser relevante para si.

Nesta página

Expandir tudo | Recolher tudo

INTRODUÇÃO

Navegação inteligente é substituída no Microsoft ASP.NET 2.0 e não é suportada pelo Atendimento Microsoft. Este artigo descreve como implementar os recursos de navegação inteligente no ASP.NET 2.0.

Mais Informações

Em versões anteriores do ASP.NET, você pode habilitar navegação inteligente usando a propriedade Page.SmartNavigation . Quando você definir a propriedade Page.SmartNavigation como true , os seguintes recursos de navegação inteligente são habilitados:
  • A posição de rolagem de uma página da Web é mantida após o postback.
  • O foco do elemento em uma página da Web é mantido durante a navegação.
  • Somente o estado mais recente da página da Web é mantido na pasta de histórico do navegador da Web.
  • O efeito de cintilação que pode ocorrer em uma página da Web durante a navegação é minimizado.
Este artigo descreve como implementar os recursos de navegação inteligente no ASP.NET 2.0 sem usar a propriedade Page.SmartNavigation .

Como manter a posição de rolagem

Para manter a posição de rolagem de uma página da Web depois de postback, use a propriedade Page.MaintainScrollPositionOnPostBack . Para obter mais informações sobre a propriedade Page.MaintainScrollPositionOnPostBack , visite o seguinte site da Web Microsoft Developer Network (MSDN):
http://msdn2.microsoft.com/en-us/library/system.web.ui.page.maintainscrollpositiononpostback.aspx (http://msdn2.microsoft.com/en-us/library/system.web.ui.page.maintainscrollpositiononpostback.aspx)

Como manter o foco do elemento

Para manter o foco do elemento em uma página da Web durante a navegação, use o método Page.SetFocus . Para obter mais informações sobre o método Page.SetFocus , visite o seguinte site da MSDN:
http://msdn2.microsoft.com/en-us/library/system.web.ui.page.setfocus.aspx (http://msdn2.microsoft.com/en-us/library/system.web.ui.page.setfocus.aspx)

Como manter apenas o estado página da Web mais recente na pasta de histórico do navegador da Web

Para impedir que um usuário voltando para páginas da Web visitadas anteriormente, você deve evitar páginas da Web visitadas sejam adicionados para a pasta de histórico do navegador da Web. Além disso, você deve evitar postbacks geradas por controles de servidor do ASP.NET sejam adicionados para a pasta de histórico do navegador da Web. Se apenas o estado de página da Web mais recente é mantido e, se não páginas da Web na pasta de histórico do navegador da Web, Voltar não está disponível.

Por design, você não pode modificar a pasta de histórico do navegador da Web por meio de programação. Para contornar essa restrição, use um dos seguintes métodos.

Método 1: Desativar o cache do navegador Web e usar variáveis de sessão

Se você desabilitar o cache do navegador Web, o Microsoft Internet Explorer mantém somente ponteiros para as páginas da Web visitadas na pasta de histórico do navegador da Web. Internet Explorer não mantém o conteúdo real para páginas da Web. Portanto, quando um usuário clicar em Voltar , o navegador da Web deve enviar uma solicitação página para o servidor Web. Usando variáveis de sessão ASP.NET, você pode escrever um algoritmo que determina se o usuário deve ser capaz de exibir a página solicitada. Se devem ocorrer problemas no aplicativo da Web quando um usuário exibir a página solicitada, o servidor Web pode redirecionar o navegador da Web para a página atual em vez disso. Portanto, nada parece acontecer quando o usuário clicar em Voltar .

Para desativar o cache do navegador Web, use um dos seguintes métodos:
  • Desative o cache do navegador da Web usando a diretiva @ OutputCache do ASP.NET. Quando você definir o atributo Location como Nenhum , o cache de navegador da Web é desabilitado. Para obter mais informações sobre a diretiva @ OutputCache , visite o seguinte site da MSDN:
    http://msdn2.microsoft.com/en-us/library/hdxfb6cy.aspx (http://msdn2.microsoft.com/en-us/library/hdxfb6cy.aspx)
  • Desative o cache do navegador da Web programaticamente usando o método Response.Cache.SetCacheability . Para obter mais informações sobre o método Response.Cache.SetCacheability , visite o seguinte site da MSDN:
    http://msdn2.microsoft.com/en-us/library/c4yy9w70.aspx (http://msdn2.microsoft.com/en-us/library/c4yy9w70.aspx)
  • Desativar o cache do navegador da Web usando < meta http-equiv > marca HTML em uma página da Web. O exemplo de código HTML a seguir demonstra como fazer isso.
    <html>
    <head>
      <meta http-equiv="Expires" content="0">
      <meta http-equiv="Cache-Control" content="no-cache">
      <meta http-equiv="Pragma" content="no-cache">
    </head>
    

Método 2: Usar um quadro oculto em uma página da Web

Esse método se parece com o mecanismo é usado internamente pelo navegação inteligente. Crie uma página da Web que contém uma moldura visível e um quadro oculto. O exemplo de código HTML a seguir demonstra como fazer isso.
<frameset cols="100%,*">
    <frame src="goback.html">
    <frame src="fillerpage.html">
</frameset>
dois quadros devem fazer referência a uma página da Web existente. Caso contrário, janela do navegador da Web exibirá uma mensagem de erro que a página da Web não pode ser encontrada. A página de quadro oculto (Fillerpage.html) não deve conter nenhum conteúdo. A página de quadro visível (goback.html) deve conter o seguinte código HTML.
<meta http-equiv="refresh" content=".0; url=nobackpage.html">
quando um usuário visitar a página da Web, ambos os quadros são carregados. A página goback.html redireciona imediatamente o quadro visível para uma nova página da Web (Nobackpage.html). Se o usuário clicar em Voltar , a página goback.html é carregada. Em seguida, a página goback.html imediatamente redireciona o usuário para a página Nobackpage.html novamente.

Método 3: Use o método location.replace

Crie uma página da Web que executa um script do lado do cliente que chama o método location.replace . Nesse caso, o navegador da Web carrega o conteúdo de uma URL na janela ativa. Porque o conteúdo é substituído na janela ativa, o navegador da Web não considera essa substituição seja navegação entre páginas da Web. Portanto, não há entradas são adicionadas para a pasta de histórico do navegador da Web. O exemplo de código HTML a seguir demonstra como usar o método location.replace .
<a href="next.aspx" onclick="javascript:location.replace(this.href); event.returnValue=false; event.cancelBubble=true;">
Click here to visit the next page without adding the current page to the history folder.
</a>
o exemplo de código a seguir demonstra como usar o método location.replace em um método translation from VPE for Csharp.
private void WebForm1_PreRender(object sender, System.EventArgs e)
{
    if (IsPostBack)
    {
        Response.Write("<html><head><script>location.replace('"+Request.Path+"');\n"+"</script></head><body></body></html>\n");
        Response.End();
    }
}
para obter mais informações sobre o método location.replace , visite o seguinte site da MSDN:
http://msdn2.microsoft.com/en-us/library/ms536712.aspx (http://msdn2.microsoft.com/en-us/library/ms536712.aspx)

Método 4: Use o método window.history.forward

Crie uma página da Web que executa um script do lado do cliente que chama o método window.history.forward . Nesse caso, o navegador da Web avança automaticamente uma página na pasta de histórico do navegador da Web. Portanto, os postbacks posteriores são adicionadas para a pasta de histórico do navegador da Web. Se um usuário clicar em Voltar , o usuário é redirecionado para a página da Web atual.

Você pode usar o método window.history.forward juntamente com o método location.replace . Quando você usar esses métodos juntos, navegação entre páginas da Web e postbacks são tratados corretamente.

Para obter mais informações sobre o método window.history.forward , visite o seguinte site da MSDN:
http://msdn2.microsoft.com/en-us/library/ms536426.aspx (http://msdn2.microsoft.com/en-us/library/ms536426.aspx)

Método 5: Modificar a lógica de aplicativo da Web

Modificar a lógica de aplicativo da Web para funcionar corretamente quando um usuário clicar em Voltar . O aplicativo da Web deve manter a integridade de todos os dados enviados e a integridade do estado do usuário quando o usuário clicar em Voltar .

Como minimizar o efeito de cintilação que pode ocorrer durante a navegação

Quando um usuário exibe uma página da Web em um aplicativo ASP.NET que usa controles de servidor, o usuário pode haver um efeito de cintilação. O efeito de cintilação pode ocorrer quando o usuário altera o valor de um controle. Se o controle gera um postback, o navegador envia uma solicitação para um novo estado de página da Web para o servidor Web. Quando o novo estado de página da Web é processado no navegador da Web, o efeito de cintilação pode ocorrer.

Há não maneiras simples para eliminar esse efeito cintilação, porque a página da Web deve ser processada novamente. Normalmente, esse comportamento é notável para o usuário.

Observação Quando a velocidade de conexão entre o cliente da Web e o servidor Web é muito rápida, o efeito de cintilação pode ser imperceptível.

Para minimizar o efeito de cintilação, minimizar o número de postbacks ou eliminar postbacks. Para fazer isso, use um dos seguintes métodos, conforme apropriado para sua situação.

Método 1: Usar o Gerenciador de retorno de chamada do cliente ASP.NET 2.0

Use o Gerenciador de retorno de chamada do cliente ASP.NET 2.0 para permitir que as solicitações de envio de páginas da Web para o servidor Web sem usar um postback completo. Porque os retornos de chamada cliente não incluem dados de postback, retornos de chamada do cliente não forçar a página da Web inteira para ser atualizado no navegador da Web. Isso minimiza o efeito de cintilação que pode ocorrer durante a navegação.

Para obter mais informações sobre o Gerenciador de retorno de chamada do cliente ASP.NET 2.0, visite o seguinte site da MSDN:
http://msdn.microsoft.com/msdnmag/issues/06/00/ASPNET20Overview/default.aspx (http://msdn.microsoft.com/msdnmag/issues/06/00/ASPNET20Overview/default.aspx)
Para obter mais informações sobre como implementar retornos de chamada do cliente sem usar uma nova postagem, visite o seguinte site da MSDN:
http://msdn2.microsoft.com/en-us/library/ms178208.aspx (http://msdn2.microsoft.com/en-us/library/ms178208.aspx)

Método 2: Usar um quadro oculto em uma página da Web

Crie uma página da Web que contém uma moldura visível e um quadro oculto. Para obter mais informações sobre como fazer isso, consulte Método 2 na seção "Como manter apenas o estado página da Web mais recente na pasta de histórico do navegador da Web".

Referências

Para obter mais informações sobre a propriedade Page.SmartNavigation que foi substituída no ASP.NET 2.0, visite o seguinte site da MSDN:
http://msdn2.microsoft.com/en-us/library/system.web.ui.page.smartnavigation.aspx (http://msdn2.microsoft.com/en-us/library/system.web.ui.page.smartnavigation.aspx)

A informação contida neste artigo aplica-se a:
  • Microsoft ASP.NET 2.0
Palavras-chave: 
kbmt kbhowto kbinfo KB913721 KbMtpt
Tradução automáticaTradução automática
IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine Translation ou MT), não tendo sido portanto traduzido ou revisto por pessoas. A Microsoft possui artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais, com o objetivo de oferecer em português a totalidade dos artigos existentes na base de dados de suporte. No entanto, a tradução automática não é sempre perfeita, podendo conter erros de vocabulário, sintaxe ou gramática. A Microsoft não é responsável por incoerências, erros ou prejuízos ocorridos em decorrência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza atualizações freqüentes ao software de tradução automática (MT). Obrigado.
Clique aqui para ver a versão em Inglês deste artigo: 913721  (http://support.microsoft.com/kb/913721/en-us/ )
Retired KB ArticleAviso de Isenção de Responsabilidade sobre Conteúdo do KB Aposentado
Este artigo trata de produtos para os quais a Microsoft não mais oferece suporte. Por esta razão, este artigo é oferecido "como está" e não será mais atualizado.