none
Executar onclick antes do MVC RRS feed

  • Pergunta

  • Bom dia pessoal

    estou começando a estudar MVC agora, e já tenho um problema. Na aplicação que tenho que mexer tem uma linha assim: 

    <%= Html.ActionLink("Deletar", "Delete", "Contato", new { codigo = Model.Codigo }, new { @class = "botoes", id = "Details_Deletar", title = ResolveUrl("~/Help/Contato/Details_Deletar.htm"), onclick = "javascript:Deletar();" })%>

    Ela chama o controle para deletar um contato, Ok! perfeito funciona tudo certo, mas como podem ver tem um onclick ali na frente, que executa um "confirm". Mesmo eu apertando no Cancel e enviando pra outro lugar ele apaga o contato.

    Como faço pra corrigir isso?


    Gustavo Bergamo
    terça-feira, 25 de maio de 2010 14:50

Respostas

  • Colega eu resolvi seu problema usando jQuery!

    <script type="text/javascript" src="http://ajax.microsoft.com/ajax/jQuery/jquery-1.4.2.min.js"></script>
    <script type="text/javascript">
      $(function () {
        $("#link").click(function() {
          return confirm("Deseja realmente deletar?");
        });
      });    
    </script>

    E o html:

    <%= Html.ActionLink("OutroLink", "About", "Home", new { @id = "link" })%>


    Contato:albertim_brasil@hotmail.com - Se ajudei, marca como útil.
    Twitter: Me siga!!
    Blog:http://dotnettime.spaces.live.com/

    sexta-feira, 28 de maio de 2010 07:37

Todas as Respostas

  • Fala Gustavo,

    Você vai ter que fazer assim (tem que ter um "return" no onclick, veja em negrito ):

    <script language="javascript">
        function Deletar() {
            return confirm('Tem certeza que quer deletar?');
        }
    </script>

    <%= Html.ActionLink("Deletar", "Delete", "Contato", new { codigo = Model.Codigo }, new { @class = "botoes", id = "Details_Deletar", title = ResolveUrl("~/Help/Contato/Details_Deletar.htm"), onclick = "return Deletar();" })%>

     


    Forte abraço,

    André Borges Medeiros
    MCT, MCPD, MCTS

    >> Se a resposta solucionar sua dúvida, favor Votar como Útil
    terça-feira, 25 de maio de 2010 17:40
    Moderador
  • Obrigado pela resposta André, mas, infelizmente, não deu certo, continudo excluindo o contato mesmo quando aperto no "cancel" do "confirm"
    Gustavo Bergamo
    terça-feira, 25 de maio de 2010 20:25
  • infelizmente, não deu certo, continudo excluindo o contato mesmo quando aperto no "cancel" do "confirm"


    Olá Gustavo,

    Pode mostrar o código HTML gerado no seu caso?

    Deveria ser algo mais ou menos assim:

        <a class="botoes" href="/Contato/Delete" id="Details_Deletar" onclick="return Deletar();" title="...">Deletar</a>   

    Abraços,
    Caio Proiete


    Caio Proiete
    Microsoft MVP, MCT, MCPD, MCTS, MCSD
    http://www.caioproiete.com
    quarta-feira, 26 de maio de 2010 13:50
    Moderador
  • Desculpa a demora ai!

    dei uma resolvida fazendo por HTML mesmo.. mas quero resolver com MVC.

    aí está:

    <a class="botoes" href="/Contato/Delete?codigo=23" id="Details_Deletar" onclick="javascript:Deletar();" title="/Help/Contato/Details_Deletar.htm">Deletar</a>
    

    e a função:

    function Deletar(contato) {
          if (confirm("Deseja realmente deletar os dados desse contato?") == true)
            location.href = '/Contato/Delete?codigo=23';
          else
            location.href = '/Contato/Details?codigo=23';      
        }
    

    Gustavo Bergamo
    quarta-feira, 26 de maio de 2010 21:08
  • Olá Gustavo,

    Você deveria implementar como o André Medeiros indicou...  A função Deletar apenas retorna true ou false, de acordo com a resposta do usuário, e lá no evento onclick do seu link, você coloca o return Deletar(), de forma que quando o usuário cancelar a janela, seja retornado false, e então o evento onclick é cancelado, e nada acontece (que é o que você quer).

    Dá uma lida com atenção no código do André que faz exatamente o que você perguntou.

    Abraços,
    Caio Proiete




    Caio Proiete
    Microsoft MVP, MCT, MCPD, MCTS, MCSD
    http://www.caioproiete.com

    quarta-feira, 26 de maio de 2010 21:18
    Moderador
  • Olá Caio,

    Como você pôde ver ali em cima também, eu tentei colocando o return já, e infelizmente não deu certo.

    Mesmo assim, obrigado pelas respostas!


    Gustavo Bergamo
    quinta-feira, 27 de maio de 2010 11:34
  • Colega eu resolvi seu problema usando jQuery!

    <script type="text/javascript" src="http://ajax.microsoft.com/ajax/jQuery/jquery-1.4.2.min.js"></script>
    <script type="text/javascript">
      $(function () {
        $("#link").click(function() {
          return confirm("Deseja realmente deletar?");
        });
      });    
    </script>

    E o html:

    <%= Html.ActionLink("OutroLink", "About", "Home", new { @id = "link" })%>


    Contato:albertim_brasil@hotmail.com - Se ajudei, marca como útil.
    Twitter: Me siga!!
    Blog:http://dotnettime.spaces.live.com/

    sexta-feira, 28 de maio de 2010 07:37
  • Funcionou perfeitament Alberto!

    muito obrigado.


    Gustavo Bergamo
    sexta-feira, 28 de maio de 2010 12:16