Usuário com melhor resposta
Confirm no code behind

Pergunta
-
Bom dia meus queridos, venho pedir uma ajuda que talvez seja uma bobagem para vocês que tem experiência em programação asp.net.
O que procuro é uma maneira de usar o confirm do javascript dentro do código c#, ou seja se ok, faz isso se não não ha ação
O script dentro do c# eu crio assim:
string myScript = "window.confirm('Deseja Realmente excluir esta solicitação?')";
ScriptManager.RegisterStartupScript(Page, Page.GetType(), "myscript", myScript, true);ele exibe o alerta, mas não conforme deveria, a ação é executada independente do script, se alguém puder me ajudar ficarei muito agradecido.
Luciano Auad
Respostas
-
Olá liomendes.
Esta é uma dúvida muito comum.
Este código que você está utilizando registra um script client na sua página html, porém DEPOIS de ter chegado no code-behind (server).
Uma solução nesse caso é implementar uma confirmação no client ANTES mesmo de chegar no server, algo do tipo:
<asp:Button ID="btnMeuBotao" runat="server" Text="Executa Ação" OnClientClick="return ConfirmaAcao()" onclick="btnMeuBotao_Evento_Server" />
Perceba que o botão tem uma chamada para uma função client e uma chamada de evento server (OnClientClick e OnClick)
Ainda na sua página, você adiciona o script de confirmação:
<head runat="server"> <title>Minha página</title> <script> function ConfirmaAcao() { var retorno = window.confirm("Deseja Realmente excluir esta solicitação?") return retorno; } </script> </head>
Explicação:
A função client window.confirm() retorna um bool, sendo true se clicar Ok ou false se clicar Cancel
Sendo true (ok), aí sim é executado o código no code-behind
Sendo false (cancel), não faz nada e a página permanece estática
Desse modo você garante que o código no code-behind só será executado caso o usuário confirme a ação.
Espero ter ajudado
-------------------------
Tiago Saraiva Ferreira
- Marcado como Resposta liomendes quarta-feira, 29 de agosto de 2012 15:27
Todas as Respostas
-
Olá liomendes.
Esta é uma dúvida muito comum.
Este código que você está utilizando registra um script client na sua página html, porém DEPOIS de ter chegado no code-behind (server).
Uma solução nesse caso é implementar uma confirmação no client ANTES mesmo de chegar no server, algo do tipo:
<asp:Button ID="btnMeuBotao" runat="server" Text="Executa Ação" OnClientClick="return ConfirmaAcao()" onclick="btnMeuBotao_Evento_Server" />
Perceba que o botão tem uma chamada para uma função client e uma chamada de evento server (OnClientClick e OnClick)
Ainda na sua página, você adiciona o script de confirmação:
<head runat="server"> <title>Minha página</title> <script> function ConfirmaAcao() { var retorno = window.confirm("Deseja Realmente excluir esta solicitação?") return retorno; } </script> </head>
Explicação:
A função client window.confirm() retorna um bool, sendo true se clicar Ok ou false se clicar Cancel
Sendo true (ok), aí sim é executado o código no code-behind
Sendo false (cancel), não faz nada e a página permanece estática
Desse modo você garante que o código no code-behind só será executado caso o usuário confirme a ação.
Espero ter ajudado
-------------------------
Tiago Saraiva Ferreira
- Marcado como Resposta liomendes quarta-feira, 29 de agosto de 2012 15:27
-
Obrigado Tiago, em minha implementação eu queria algo que precisasse ser confirmado caso algo acontecesse no ambiente de uso, por exemplo: quando eu clico em publicar esta pagina ela é publicada, mas se eu deixei de preencher meu nome a pagina pergunta, deixar sem nome ou alterar?
Obrigado Tiago.