Artigo: 913721 - Última revisão: quinta-feira, 22 de Novembro de 2007 - Revisão: 1.4

Como implementar as funcionalidades de navegação avançada 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 | Reduzir tudo

INTRODUÇÃO

Navegação avançada está preterida no Microsoft ASP.NET 2.0 e já não é suportada pelo suporte técnico da Microsoft. Este artigo descreve como implementar as funcionalidades de navegação avançada no ASP.NET 2.0.

Mais Informação

Em versões anteriores do ASP.NET, activar a navegação avançada utilizando a propriedade Page.SmartNavigation . Quando definir a propriedade Page.SmartNavigation como true , são activadas as seguintes funcionalidades de navegação avançada:
  • Posição de deslocamento de uma página Web é mantida após a nova colocação.
  • O foco de elemento numa página Web é mantido durante a navegação.
  • Apenas o estado de página Web mais recente é retido na pasta do histórico Web browser.
  • O efeito de intermitência que poderão ocorrer numa página Web durante a navegação é minimizado.
Este artigo descreve como implementar as funcionalidades de navegação avançada no ASP.NET 2.0 sem utilizar a propriedade Page.SmartNavigation .

Como manter a posição de deslocamento

Para manter a posição de deslocamento de uma página Web depois de nova colocação, utilize a propriedade Page.MaintainScrollPositionOnPostBack . Para mais informações sobre a propriedade Page.MaintainScrollPositionOnPostBack , visite o seguinte Web site da 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 de elemento

Para manter o foco de elemento numa página Web durante a navegação, utilize o método Page.SetFocus . Para mais informações sobre o método Page.SetFocus , visite o seguinte site da Web 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 de página Web mais recente na pasta de histórico do browser de Web

Para impedir que um utilizador regressar às páginas Web anteriormente visitadas, tem de evitar páginas Web visitadas sejam adicionados à pasta do histórico Web browser. Além disso, tem de evitar postbacks gerados pelos controlos de servidor ASP.NET sejam adicionados à pasta do histórico Web browser. Se apenas o estado de página Web mais recente será mantido e não páginas Web estão na pasta do histórico Web browser, anterior não está disponível.

Por predefinição, não pode modificar a pasta de histórico do Web browser através de programação. Para contornar esta restrição, utilize um dos seguintes métodos.

Método 1: Desactivar a cache do browser da Web e utilizar variáveis de sessão

Se desactivar a cache do browser da Web, o Microsoft Internet Explorer mantém apenas os ponteiros para as páginas Web visitadas na pasta do histórico Web browser. Internet Explorer não mantém o conteúdo real para as páginas Web. Por este motivo, quando um utilizador clica em ' Anterior ' , o browser tem de submeter um pedido de página para o servidor Web. Utilizando variáveis de sessão ASP.NET, pode escrever um algoritmo que determina se o utilizador deve ser conseguir visualizar a página pedida. Se deverá ocorrer problemas na aplicação Web quando um utilizador visualizasse a página pedida, o servidor Web pode redireccionar o browser para a página actual em vez disso. Por conseguinte, nada aparece acontecer quando o utilizador clica em ' Anterior ' .

Para desactivar a cache do browser da Web, utilize um dos seguintes métodos:
  • Desactive a cache do browser da Web, utilizando a directiva @ OutputCache do ASP.NET. Quando definir o atributo de localização para nenhum , a cache do browser da Web é desactivada. Para obter mais informações sobre a directiva @ OutputCache , visite o seguinte site da Web MSDN:
    http://msdn2.microsoft.com/en-us/library/hdxfb6cy.aspx (http://msdn2.microsoft.com/en-us/library/hdxfb6cy.aspx)
  • Desactive a cache do browser da Web através de programação, utilizando o método Response.Cache.SetCacheability . Para mais informações sobre o método Response.Cache.SetCacheability , visite o seguinte site da Web MSDN:
    http://msdn2.microsoft.com/en-us/library/c4yy9w70.aspx (http://msdn2.microsoft.com/en-us/library/c4yy9w70.aspx)
  • Desactivar a cache do browser da Web utilizando o < meta http-equiv > tag HTML numa página Web. O exemplo de código HTML seguinte demonstra como efectuar este procedimento.
    <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: Utilizar uma moldura oculta numa página Web

Este método é semelhante ao mecanismo que é utilizado internamente pelo navegação avançada. Crie uma página Web que contém uma moldura visível e uma moldura de oculta. O exemplo de código HTML seguinte demonstra como efectuar este procedimento.
<frameset cols="100%,*">
    <frame src="goback.html">
    <frame src="fillerpage.html">
</frameset>
ambos os pacotes tem de referenciar uma página Web existente. Caso contrário, a janela de browser apresenta uma mensagem de erro que não é possível encontrar a página Web. A página de molduras oculto (Fillerpage.html) pode conter nenhum conteúdo. A página de molduras visível (goback.html) tem de conter o seguinte código HTML.
<meta http-equiv="refresh" content=".0; url=nobackpage.html">
quando um utilizador visitasse a página Web, ambos os pacotes são carregados. A página goback.html redirecciona imediatamente os a moldura visível para uma nova página Web (Nobackpage.html). Se o utilizador clicar em ' Anterior ' , 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: Utilizar o método location.replace

Crie uma página Web que executa um script do lado do cliente que chame o método location.replace . Neste caso, o browser carrega o conteúdo de um URL na janela activa. Uma vez que o conteúdo é substituído na janela activa, o browser não considera esta substituição a navegação entre páginas Web. Por conseguinte, não entradas são adicionadas para a pasta do histórico Web browser. O exemplo de código HTML seguinte demonstra como utilizar 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 seguinte exemplo de código demonstra como utilizar o método location.replace num método de C#. privada
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 Web site da MSDN:
http://msdn2.microsoft.com/en-us/library/ms536712.aspx (http://msdn2.microsoft.com/en-us/library/ms536712.aspx)

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

Crie uma página Web que executa um script do lado do cliente que chame o método window.history.forward . Neste caso, o browser avança automaticamente uma página na pasta do histórico Web browser. Por conseguinte, postbacks posteriores são adicionados à pasta de histórico do Web browser. Se um utilizador clica em ' Anterior ' , o utilizador é redireccionado para a página Web actual.

Pode utilizar o método window.history.forward juntamente com o método location.replace . Quando utiliza estes métodos em conjunto, a navegação entre páginas Web e postbacks são processados correctamente.

Para mais informações sobre o método window.history.forward , visite o seguinte site da Web 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 da aplicação Web

Modificar a lógica da aplicação Web funcione correctamente quando um utilizador clica em ' Anterior ' . A aplicação da Web tem de manter a integridade de todos os dados submetidos e a integridade do estado do utilizador quando o utilizador clica em ' Anterior ' .

Como minimizar o efeito de intermitência que poderão ocorrer durante a navegação

Quando um utilizador visualizasse uma página Web numa aplicação Web do ASP.NET que utiliza controlos de servidor, o utilizador poderão ocorrer um efeito de intermitência. O efeito de intermitência pode ocorrer quando o utilizador altera o valor de um controlo. Se o controlo gera uma nova colocação, o browser submete um pedido de um novo estado de página Web para o servidor Web. Quando o novo estado de página Web é apresentado no browser, pode ocorrer o efeito de intermitência.

Existem não formas simples para eliminar este efeito cintilação, porque a página Web tem de ser composta novamente. Normalmente, este comportamento é evidente ao utilizador.

Nota Quando a velocidade de ligação entre o cliente Web e o servidor Web seja muito rápida, o efeito de intermitência poderá ser unnoticeable.

Para minimizar o efeito de intermitência, minimize o número de postbacks ou eliminar postbacks. Para o fazer, utilize um dos seguintes métodos, conforme adequado à situação.

Método 1: Utilizar o Gestor de chamada de retorno de cliente do ASP.NET 2.0

Utilize o Gestor de chamada de retorno de cliente do ASP.NET 2.0 para permitir que páginas Web submeter pedidos para o servidor da Web sem utilizar uma nova colocação completa. Uma vez que chamadas de retorno da cliente não incluir dados reposição, chamadas de retorno da cliente não force a página Web inteira para ser actualizado no browser. Isto minimiza o efeito de intermitência que poderão ocorrer durante a navegação.

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

Método 2: Utilizar uma moldura oculta numa página Web

Crie uma página Web que contém uma moldura visível e uma moldura de oculta. Para mais informações sobre como efectuar este procedimento, consulte o método 2 na secção "Como manter apenas o estado de página Web mais recente na pasta do Web browser histórico".

Referências

Para mais informações sobre a propriedade de Page.SmartNavigation preterida no ASP.NET 2.0, visite o seguinte site da Web 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 revisto ou traduzido por humanos. A Microsoft tem artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais. O objectivo é simples: oferecer em Português a totalidade dos artigos existentes na base de dados do suporte. Sabemos no entanto que a tradução automática não é sempre perfeita. Esta pode conter erros de vocabulário, sintaxe ou gramática? erros semelhantes aos que um estrangeiro realiza ao falar em Português. A Microsoft não é responsável por incoerências, erros ou estragos realizados na sequência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza actualizações frequentes 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 ArticleExclusão de Responsabilidade para Conteúdo sem Suporte na KB
Este artigo foi escrito sobre produtos para os quais a Microsoft já não fornece suporte. Por conseguinte, este artigo é oferecido "tal como está" e deixará de ser actualizado.