none
&quot maldito! RRS feed

  • Pergunta

  • Bom dia pessoal, coloquei a seguinte instrução que se refere a um botão recebendo uma função em javascript com passagem de parâmetro: 

    Button1.OnClientClick = "chamaAParada(\"Teste\",\"Sou Sinistro! Dig Din!\",\"http://localhost:51345/_img/template/logo.png\");";
    

    Adicionei a <asp:ScriptManager ID="ScriptManager1" runat="server">, do jeito que deve ser, e o resultado é esse:

     <input type="submit" name="Button1" value="Button" onclick="chamaAParada(&quot;Teste&quot;,&quot;Sou Sinistro! Dig Din!&quot;,&quot;http://localhost:51345/_img/template/logo.png&quot;);" id="Button1" />  
    
      
    
    O problema é quando o Visual Studio renderiza a UI no navegador, ele substitui " por &quot.
    Alguém me ajuda? Não sei muito da integração entre C# e javascript.


     






    • Editado dougtop-ss segunda-feira, 9 de janeiro de 2012 10:51
    • Movido AndreAlvesLima segunda-feira, 9 de janeiro de 2012 21:00 (De:Serviços Web (Web services))
    segunda-feira, 9 de janeiro de 2012 10:39

Respostas

  • Acho que eu vou ficar mesmo com a minha solução inicial, ela é meio burra porque o  chamaAParada("Teste","Sou Sinistro! Dig Din!","http://localhost:51345/_img/template/logo.png"); não vem no código html da renderização, ele só aparece depois que clico no botão, ele faz uma requisição no servidor, atualizando a página.

     

    O código é:

     

     ScriptManager.RegisterStartupScript(this, this.GetType(), "teste", "chamaAParada(\"Teste\",\"Sou foda! Dig Din!\",\"http://localhost:51345/_img/template/logo.png\");", true);
    

    Obrigado pela ajuda Paulo César!

     


    • Editado dougtop-ss segunda-feira, 9 de janeiro de 2012 13:34
    • Marcado como Resposta dougtop-ss terça-feira, 10 de janeiro de 2012 18:48
    segunda-feira, 9 de janeiro de 2012 13:34

Todas as Respostas

  • O que sua função faz extamente?

    Veja se isto funciona:

            string a = @"\Teste\";
            string b = @"\Sou Sinistro! Dig Din!\";
            string c = @"http://localhost:51345/_img/template/logo.png\";
            string js = string.Format("chamaAParada({0},{1},{2});", a, b, c);
            
            Button1.OnClientClick = js;
    


    --
    Marque as respostas e ajude a melhorar a busca do fórum.
    segunda-feira, 9 de janeiro de 2012 10:53
  • Button1.OnClientClick = "chamaAParada(\"Teste\",\"Sou Sinistro! Dig Din!\",\"http://localhost:51345/_img/template/logo.png\");"; é uma instrução que fica no código behind, a função "chamaAParada" passa parâmetro para um arquivo javascript que a página chama. A função que está dentro desse arquivo é :
    function chamaAParada(titulo, texto, img) {
      $.gritter.add({
        title: titulo,
        text: texto,
        image: img,
        sticky: false,
        time: ''
      });
      return false;
    }
    Ela faz com que um box de notificação suba quando alguém clica no botão.
    Eu consigo declarar o que você sugeriu no código behind?
    • Editado dougtop-ss segunda-feira, 9 de janeiro de 2012 11:10
    segunda-feira, 9 de janeiro de 2012 11:09
  • Sim. O que postei é feito justamente no código. Não sei funciona.
    --
    Marque as respostas e ajude a melhorar a busca do fórum.
    segunda-feira, 9 de janeiro de 2012 11:12
  • A saída no navegador ficou assim: 
    <input type="submit" name="Button1" value="Button" onclick="chamaAParada(Teste,Sou Sinistro! Dig Din!,http://localhost:51345/_img/template/logo.png);" 
    
    Vou fazer mais alguns testes. Quem não sabe.
    segunda-feira, 9 de janeiro de 2012 11:28
  • O problema é que sempre que eu consigo imprimir o " (aspas) no código no navegador, ele troca pelo &quot;, acho que para resolver só mesmo uma conversão através do próprio javascript. Existe alguma instrução de conversão em javascript?
    segunda-feira, 9 de janeiro de 2012 11:40
  • Replace.
    --
    Marque as respostas e ajude a melhorar a busca do fórum.
    segunda-feira, 9 de janeiro de 2012 11:42
  • Acho que eu vou ficar mesmo com a minha solução inicial, ela é meio burra porque o  chamaAParada("Teste","Sou Sinistro! Dig Din!","http://localhost:51345/_img/template/logo.png"); não vem no código html da renderização, ele só aparece depois que clico no botão, ele faz uma requisição no servidor, atualizando a página.

     

    O código é:

     

     ScriptManager.RegisterStartupScript(this, this.GetType(), "teste", "chamaAParada(\"Teste\",\"Sou foda! Dig Din!\",\"http://localhost:51345/_img/template/logo.png\");", true);
    

    Obrigado pela ajuda Paulo César!

     


    • Editado dougtop-ss segunda-feira, 9 de janeiro de 2012 13:34
    • Marcado como Resposta dougtop-ss terça-feira, 10 de janeiro de 2012 18:48
    segunda-feira, 9 de janeiro de 2012 13:34
  • Ok. Depois Eu vi que você está utilizando um button normal e não um controle do asp.net

    Uma dica que te dou é: como é apenas um teste, você poderia deixar as informações fixas:

    function chamaAParada() {
      $.gritter.add({
        title: 'Titulo qualquer',
        text: 'Texto qualquer',
        image: 'caminhoh da img',
        sticky: false,
        time: ''
      });
      return false;
    

    Ficaria mais fácil na hora de testar, sendo apenas necessário chamar o nome da função. Quando precisamos parametrizar ai sim deve-se colocar os parametros.


    --
    Marque as respostas e ajude a melhorar a busca do fórum.
    segunda-feira, 9 de janeiro de 2012 13:44
  • Na verdade eu uso um controle asp.net sim, aquele imput que vc viu, foi a tradução da UI que o Visual Studio renderiza quando compila a página. O button vira um input.

    Além disso, se fosse dessa última forma que sugere, daria certo, porque já testei, porém preciso passar parâmetro, porque mais tarde isso vai ser dinâmico. Quando um produto for comprado, aparecerá uma janela de notificação com o nome do produto e a foto. E eu não consigo colocar a varíavel do c# no meu arquivo javascript.

    segunda-feira, 9 de janeiro de 2012 15:12
  • Prezado(a),
    Estou migrando seu post para o fórum de Desenvolvimento Web Geral.
    Por favor, das próximas vezes que tiver alguma dúvida relacionada a esse assunto, poste por lá.
    Obrigado.

    André Alves de Lima
    Microsoft MVP - Client App Dev
    Visite o meu site: http://www.andrealveslima.com.br
    Me siga no Twitter: @andrealveslima
    segunda-feira, 9 de janeiro de 2012 21:00