Qual é a melhor maneira de manter uma página ASP.NET até longa acabamentos de operação? [fechadas]
-
05-09-2019 - |
Pergunta
Javascript?
Metatag atualização?
Response.Redirect (para si mesmo)
Server.Transfer (para si mesmo)
painel de atualização Ajax?
Solução
Vamos olhar as opções:
Javascript?
Esta coima funciona, contanto que o usuário não tenha desativado-lo.
Metatag atualização?
Um método obsoleto em favor do método Javascript. No entanto, você pode usá-lo como um backup se o usuário tiver desativado Javascript.
Response.Redirect (para si mesmo)
que não funciona, como o navegador não mostraria anyhing útil para o usuário enquanto redirecionando. Além disso, o navegador vai deixar de requerer depois de um certo número de redirecionamentos para proteger o usuário de redirecionamentos infinitos.
Server.Transfer (para si mesmo)
O que não quer trabalhar, como o código no servidor seria apenas de loop sem enviar nada para o navegador. O efeito é o mesmo que ter apenas um loop em seu código.
painel de atualização Ajax?
funciona bem, desde que o usuário tenha não-deficientes Javascript. É basicamente o mesmo que a primeira opção, apenas o Javascript faz o pedido em si em vez de deixar o navegador fazer o pedido.
Outras dicas
Se você pode relatar qualquer tipo de progresso para o usuário, que tendem a correr com um asxh e uma variação de um sempre enquadrar . Adicione um pouco de jQuery UI diálogo e jQuery UI Progress Bar e você tem uma maneira brilhante de prender a atenção dos usuários, enquanto você faz o trabalho pesado no servidor.
Eu dei um exemplo de código em 874.204 que demonstra a técnica.
Se você não pode dar andamento ao usuário, que tendem a ainda usar UI diálogo e pop um "aguarde, processando ..." mensagem com um web Two Dot gif spinny oh compatível.
Confira este artigo sobre Páginas Asynchronous . Aqui é também um exemplo de CodeProject que inclui páginas assíncronas e meta-refresh.
Você pode encontrar um exemplo de implementação deste tipo de funcionalidade no Beer House Iniciado Kit- http://www.asp.net/Downloads/starter-kits/the-beer-house/ .
As páginas SendingNewsLetter.aspx e SendNewsLetter.aspx será útil. Este pode ser um exagero para a sua necessidade though- Ele ainda mostra o progresso da operação de longa duração.
Que tal usar a AJAX WebModalAnchor para aparecer uma janela com um botão de cancelar?
Espero que isso ajude,
Bill
Eu recomendo usar Ajax e exibindo um UpdateProgress que o usuário saiba que ainda está produzindo distância.