Usuário com melhor resposta
Refresh na pagina ou nao ?

Pergunta
-
Pessoal,
Tenho um carrinho de compras q em determinado momento adiciona 1 item ao carrinho.
No entanto, se a pessoa executar um refresh na pagina o sistema adiciona novamente um novo produto igual ao carrinho.Ate ai nao seria problema.
Mas no caso de cupom de desconto, ha cada refresh o usuario consegue realizar descontos sobre descontos.Como eu poderia verificar se o usuario esta recarregando a mesma pagina de novo e neste caso nao inserir o produto ou desconto mais uma vez ?
Valeu
- Movido C. Augusto Proiete [MVP]Moderator quinta-feira, 19 de abril de 2012 22:47 Movido para o forum apropriado (De:.NET Development - Geral)
Respostas
-
Boas,
O Refresh na página resubmete ao servidor o ultimo pedido, i.e., exactamente os mesmos dados, ViewState ... tudo.
Assim é normal que o delete ocorra n vezes.
Tipicamente a solução é usar um 'selo' unico que é guardado em sessão e adicionado ao formulario (via hidden input).
Se o selo submetido no pedido for diferente do que está em sessão devolvemos erro. Caso seja igual a operação é realizada e no PreRender deverá ser gerado e registado um novo 'selo'.
Existem várias variantes mais complexas desta abordagem.
Nuno Gomes http://nunogomes.net
- Marcado como Resposta AGA Neto segunda-feira, 23 de abril de 2012 03:54
Todas as Respostas
-
Ola A.G.A,
Você pode colocar dentro do Page_Load o seguinte código:
if(!Page.IsPostBack) { //TODO: colocar código de carregamento da pagina //aqui }
toda vez que a pagina carregar ele vai verificar se ela esta sendo carregada pela primeira vez ou se o usuário deu um refresh na pagina.
Caso o usuário esteja dando um refresh na pagina ele não entrará no if e não ira executar o código de desconto.
espero ter te ajudado
Abraços
"Faça as coisas da forma mais simples possível. Mas não mais simples do que isto" - Albert Einstein
-
Nao e' isso nao.
O problema ocorre por exemplo qdo uma pagina tem um gridview.RowDeleting.Se eu executo a pagina e pressiono o botao de delete, tudo funciona ok.
No entanto se eu dou um refresh na pagina, sem precisar apertar o botal de delete ele ja vai e executo o comando de delecao. -
Boas,
O Refresh na página resubmete ao servidor o ultimo pedido, i.e., exactamente os mesmos dados, ViewState ... tudo.
Assim é normal que o delete ocorra n vezes.
Tipicamente a solução é usar um 'selo' unico que é guardado em sessão e adicionado ao formulario (via hidden input).
Se o selo submetido no pedido for diferente do que está em sessão devolvemos erro. Caso seja igual a operação é realizada e no PreRender deverá ser gerado e registado um novo 'selo'.
Existem várias variantes mais complexas desta abordagem.
Nuno Gomes http://nunogomes.net
- Marcado como Resposta AGA Neto segunda-feira, 23 de abril de 2012 03:54