none
Evitando o Back do Navegador RRS feed

  • Pergunta

  • Boa tarde

    Estou com um problema. Eu tenho um cadastro de cliente, quando termino o cadastro do mesmo eu redireciono ele para outra página. Porém se eu der um "back" no navegador ele volta a página, se eu der um "incluir" novamente ele lança outro cliente no banco de dados.

    Eu pesquisei algumas alternativas na internet e encontrei algumas alternativas, porém nenhum que evite totalmente o problemas, pois se eu apertar o "BackSpace" do teclado ele também retorna a página.

    Qual é a melhor alternativa para este problema? Eu não tenho experiência com programação WEB, se alguém puder me dar uma alternativa fico agradecido! =)

    Obrigado


    Paulo Marcelo Dalbosco

    sexta-feira, 21 de dezembro de 2012 19:18

Respostas

  • Eu tratei da seguinte forma.

    Creio que não seja a melhor forma, mas foi a mais segura que encontrei no momento.

    Com uma variável global do tipo boolean ao o usuário clicar em "Próximo Passo" ela muda para true, se ele tentar voltar e a variável estiver true, ele verifica no Get do passo um "esta true?" volta para a view do passo dois. Ou seja, assim ele não deixa voltar para o Passo Um.

    É chato ter que ficar controlando essas variáveis globais. =\


    Paulo Marcelo Dalbosco

    • Marcado como Resposta Paulo M Dalbosco segunda-feira, 24 de dezembro de 2012 11:56
    segunda-feira, 24 de dezembro de 2012 11:55

Todas as Respostas

  • Cara,

    Ou você usa javascript para bloquear essas teclas especificas, ou você zera os dados quando passar no pageload da página.

    E se não quiser que ele insira novamente o mesmo cliente no banco, precisa fazer uma validação para ver se já existe um cara com aquele nome, cpf, rg etc... e se existir exibir uma mensagem de cliente já cadastrado.

    Simples assim.

    Atenciosamente, Samuel dos Anjos

    sexta-feira, 21 de dezembro de 2012 21:01
  • Acho que a melhor forma é validar de alguma forma(cpf, email) se o cliente já existe no banco.

    Caso não tenha nenhuma propriedade 'unique' o melhor é não fazer nada.. se o cliente clicou para voltar e clicou em salvar denovo ele fez isso porque quis.. simples assim..

    É a mesma coisa que você salvar seus dados no facebook ou qualquer outro site e depois voltar e salvar denovo.


    http://www.linkedin.com/pub/murilo-kunze/44/191/455

    sexta-feira, 21 de dezembro de 2012 21:55
  • Obrigado pelas respostas!

    Neste cadastro de Cliente eu tenho validação apenas no CNPJ, se ele volta e tenta salvar da erro de validação no CNPJ, porque ele ja existe. Mas como sei que usuário é maluco, fiz o teste de colocar outro CNPJ, ae ele gera outro registro com o mesmo nome, e eu quero evitar isso. Porém neste cadastro é relativamente dispensável esta proteção pq muito difícil um cliente fazer isso de digitar outro CNPJ, mas tenho outros lugares na intranet que são em "passos" e se o cliente voltar com o "back" no passo um e altera o registro quando ele for para o passo dois e três pode trazer problemas.

    Vou estudar a idéia do JavaScript.

    Obrigado pela atenção


    Paulo Marcelo Dalbosco

    segunda-feira, 24 de dezembro de 2012 11:36
  • Eu tratei da seguinte forma.

    Creio que não seja a melhor forma, mas foi a mais segura que encontrei no momento.

    Com uma variável global do tipo boolean ao o usuário clicar em "Próximo Passo" ela muda para true, se ele tentar voltar e a variável estiver true, ele verifica no Get do passo um "esta true?" volta para a view do passo dois. Ou seja, assim ele não deixa voltar para o Passo Um.

    É chato ter que ficar controlando essas variáveis globais. =\


    Paulo Marcelo Dalbosco

    • Marcado como Resposta Paulo M Dalbosco segunda-feira, 24 de dezembro de 2012 11:56
    segunda-feira, 24 de dezembro de 2012 11:55
  • Uma outra alternativa seria tu apagar os dados dos campos, se tu tiver usando Data Annotations ele não vai permitir que salve novamente, vai pedir que digite os campos obrigatórios.

    Júnior Pacheco

    sexta-feira, 28 de dezembro de 2012 10:49