none
Pasar valor de C# a javascript RRS feed

  • Pregunta

  • Buen dia, lo que quiero hacer es como lo dice el titulo pasar un valor a una variable de C# a javascript tengo el siguiente código en el archivo .cs

    string text = "hola";
    ScriptManager.RegisterStartupScript(Page, Page.ClientScript.GetType(), "MessageAlert", "javascript:mensaje(" + text + ")", true);
    

    y en el .aspx

    function mensajes(message){
     alert('Error:' + message);
    }   
    


    y me da el siguiente error:

    Línea: 1

    Error: 'hola' no está definido

     

    Espero y me puedan ayudar por favor.

     

    martes, 17 de enero de 2012 22:43

Respuestas

  • hola

    te doy un consejo, el script cuando lo armas en codigo definelo completo en una variable, para luego asignar

    eso de armarlo mitad en una variable y mitad en el metodo es para problemas

    string script= string.Format("javascript:mensaje('{0}')", "hola");
    
    ScriptManager.RegisterStartupScript(Page, Page.ClientScript.GetType(), "MessageAlert", script, true);
    
    
    


    es mas un punto importantisimo, recuerda las comillas simples que marca el parametro del javascript, sino ese hola sera una variable

     

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    miércoles, 18 de enero de 2012 1:44

Todas las respuestas

  • Cambia la siguiente linea

    ScriptManager.RegisterStartupScript(Page, Page.ClientScript.GetType(), "MessageAlert", "javascript:mensaje(" + text + ")", true);

    por 

    ScriptManager.RegisterStartupScript(Page, Page.ClientScript.GetType(), "MessageAlert", "javascript:mensaje('" + text + "')", true);
    Te faltaban unas comillas simples.


    MCPD Web Developer 4, MCPD Silverlight 4, MCAD .net
    martes, 17 de enero de 2012 22:53
  • Buenas Alex.

    El error que te genera te lo da porque toma el texto hola como una función al no estar delimitado por comillas simples.

    Debes añadir las comillas simples entre los paréntesis de la función mensaje:

    "javascript:mensaje('" + text + "')", true);

    Un saludo.


    Antonio López Atienza
    Microsoft Community Contributor
    .NET Developer
    Code examples
    http://www.lopezatienza.es
    martes, 17 de enero de 2012 23:00
  • Hola y gracias por contestar lopezatienza, Domingo he hecho lo que me dicen pero ahora me da el mensaje:

     

    Línea: 1

    Error: El valor de la propiedad 'mensaje' es nulo o no está definido, no es un objeto de función

     

    Que mas podria estar haciendo mal, gracias.

    martes, 17 de enero de 2012 23:06
  • Hola. Este error te lo da porque la función la has llamado "mensajes" en plural y la estás tratando de invocar en singular.

    Con lo que deberías tener algo como esto

    ScriptManager.RegisterStartupScript(Page, Page.ClientScript.GetType(), "MessageAlert", "javascript:mensajes('" + text + "')", true);

     


    "En los momentos de crisis, sólo la imaginación es más importante que el conocimiento"
    martes, 17 de enero de 2012 23:10
  • Me estoy dando cuenta que si estás generando código javascript, no necesitas poner javascript:

    ScriptManager.RegisterStartupScript(Page, Page.ClientScript.GetType(), "MessageAlert", "mensaje('" + text + "')", true); 
    MCPD Web Developer 4, MCPD Silverlight 4, MCAD .net
    martes, 17 de enero de 2012 23:11
  • Primero que nada gracias a todos y si efectivamente Santiago J. estaba poniendo una s de masmil gracias.
    martes, 17 de enero de 2012 23:20
  • hola

    te doy un consejo, el script cuando lo armas en codigo definelo completo en una variable, para luego asignar

    eso de armarlo mitad en una variable y mitad en el metodo es para problemas

    string script= string.Format("javascript:mensaje('{0}')", "hola");
    
    ScriptManager.RegisterStartupScript(Page, Page.ClientScript.GetType(), "MessageAlert", script, true);
    
    
    


    es mas un punto importantisimo, recuerda las comillas simples que marca el parametro del javascript, sino ese hola sera una variable

     

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    miércoles, 18 de enero de 2012 1:44
  • Marca las respuestas que te ayudaron para que otros puedan encontrarla. Gracias
    "En los momentos de crisis, sólo la imaginación es más importante que el conocimiento"

    miércoles, 18 de enero de 2012 8:55
  • hola

    te doy un consejo, el script cuando lo armas en codigo definelo completo en una variable, para luego asignar

    eso de armarlo mitad en una variable y mitad en el metodo es para problemas

    string script= string.Format("javascript:mensaje('{0}')", "hola");
    
    ScriptManager.RegisterStartupScript(Page, Page.ClientScript.GetType(), "MessageAlert", script, true);
    
    
    


    es mas un punto importantisimo, recuerda las comillas simples que marca el parametro del javascript, sino ese hola sera una variable

     

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    me parece mejor la solucionla de leandro, desde el archivo de c# asigna el valor a la variable, y por medio de la "ScriptManager.RegisterStartupScript" envialo como argumento, y ya dentro de la funcion JS obtienes el parametro 

     

     

    miércoles, 18 de enero de 2012 14:59
  • hola

    te doy un consejo, el script cuando lo armas en codigo definelo completo en una variable, para luego asignar

    eso de armarlo mitad en una variable y mitad en el metodo es para problemas

    string script= string.Format("javascript:mensaje('{0}')", "hola");
    
    ScriptManager.RegisterStartupScript(Page, Page.ClientScript.GetType(), "MessageAlert", script, true);
    
    
    


    es mas un punto importantisimo, recuerda las comillas simples que marca el parametro del javascript, sino ese hola sera una variable

     

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    Hola disculpa que retome el tema pero solo quiero  preguntarte si  se podría mandar un arreglo dentro de la instrucción, siempre tu comentarios me salvan la vida pero ahora no he podido encontrar respuesta a mi duda, tengo lo siguiente:

               string script = "DibTramo('" + val + "'," + arraux + ");";          
               ScriptManager.RegisterStartupScript(this, this.GetType(), "DibujarTramo", script, true);

    en donde arraux es un arreglo de string, y val es un string...  no me recibe el arreglo en la funcion de javascript

    Espero puedas ayudarme gracias de antemano!


    martes, 2 de octubre de 2012 18:50
  • string[] listaCombo = convertirComboTolist(combo);
    
            string serialized_listaCombo = (new JavaScriptSerializer()).Serialize(listaCombo);
    
            ScriptManager.RegisterStartupScript(this, this.GetType(), "ModificarPlan_Click", "Fun(serialized_listaCombo);", true);

    Es necesario serializar el arreglo para pasarlo a Js

    aca el link de donde lo puedes ver mas detallado

    https://stackoverflow.com/questions/9850962/passing-array-of-strings-from-c-sharp-to-javascript

    Espero te sirva

    miércoles, 19 de julio de 2017 16:04