Mover-se de página A para a página B em Asp.Net. Qual é a melhor maneira?
-
21-08-2019 - |
Pergunta
Eu tenho um usuário sobre o que vamos chamar PageA.aspx. Este usuário precisa para chegar ao PageB.aspx. A maneira óbvia é ter uma hiperligação que simplesmente envia-los para PageB.aspx. Isso me fez pensar sobre as outras maneiras de obter entre as páginas. Pode-se usar javascript para fazer um salto do lado do cliente. Há também o redirecionamento do lado do servidor aparentemente volumosos.
O que eu gostaria de saber é o que, se houver, são os hits de desempenho entre esses diferentes métodos. Vou assumir o lado do servidor é o peso um pouco mais pesado, mas por quanto? Será que esses métodos de escala de forma diferente? Existem problemas ocultos com a fazê-lo de uma maneira em relação a outro?
Obrigado!
Solução
A ligação real é melhor para a maioria das circunstâncias. Todos os agentes de usuário saber o que um link é eo que ela representa. É melhor para SEO, acessibilidade e usabilidade.
Um server-side (via postback) redirecionamento é bom se você precisar, por exemplo, necessidade de rastrear detalhes sobre qual link foi clicado ... Mas é um pedido adicional para o servidor (e tempo para o usuário). Também botches SEO (et al) por isso é apenas uma opção viável dentro de um "web app" apropriado onde spidering ou acessibilidade são controlados ou desconsideradas.
JS pode dar-lhe o poder de rastreamento mas é inútil (por conta própria) em ambientes onde JS está desativado. Envio de atividade de volta para o servidor adiciona a carga de modo que é algo a considerar.
Se você precisar dele , considere usar links padrão e usando jquery para ligar os eventos de clique para acompanhar as coisas. Mas realmente ... Só se você precisar dele, uma vez que irá atrasar a experiência do usuário ligeiramente.
Em resumo:. A menos que você tenha uma boa razão para não, vara com as normas
Outras dicas
Eu acho que a questão importante é por que o movimento usuário de PageA a página B? O que eles fazem para que isso aconteça?
Foi porque eles pediram algum recurso diferente (um "get"), fizeram enviar dados para o servidor (ou seja, era parte de um "post"), faz o usuário saiba que PageA é diferente a página B (são conceitualmente o mesmo recurso, mas pontos de vista diferentes do mesmo) ou algo mais?
Outras considerações, como se Página B é acessível sem PageA (ele pode ser marcada, ele tem seu próprio URL, deveria ser visto como uma URL diferente no navegador?) Irá guiá-lo.
É difícil dar-lhe uma solução "melhor" sem entender essas coisas.
Quanto a usar Server.Transfer ou Response.Redirect, a diferença destas duas abordagens tem sido coberto aqui:
Server.Transfer Vs. Response.Redirect Response.Redirect e Server.Transfer Quando usar Server.Transfer sobre PostBackUrl?
Oh, e nenhuma delas são apropriadas para uma aplicação ASP.NET MVC onde você deve, em vez disso, ser o encaminhamento para uma ação em um controlador de vez.
http://weblogs.asp.net/mikebosch/archive/2008/02/02/asp-net-mvc-tip-2-redirecting-to-another -action-and-passando-information-to-it.aspx Redirect à ação em outro controlador
A minha abordagem geral é que qualquer página que exibe dados deve ser um get. Mensagens deve aceitar dados, mas não devolvê-lo, IMHO.
Portanto, eu (quase) sempre fazer um redirecionamento após um post. É um custo menor que o erro impede usuário.
Por um lado, ele impede que várias postagens dos mesmos dados -. Se recarrega usuário por qualquer motivo (ou aperta o botão de volta), eu não quero que os dados re-submetidos
A questão motor de busca é um passo importante, também. Se Página B é uma página que você deseja indexados, não será encontrado através de javascript ou de um post.