none
Usar variable javascript en codigo razor RRS feed

  • Pregunta

  • hola,

    quisiera saber como podría hacer lo siguiente, a una función javascript me llega un valor y este valor usarlo en  razor, el código es este.

    opción 1.

    <script>
        function clickLink(val)
        {
            for (var i = 0; i < '@Model.Count'; i++) {
                if ('@Model[i].ID' == val) {
                    $('#lblNombre').val(@Model[i].Nombre);
                }
            }
         }
     </script>  


    me sale el siguiente error "El nombre 'i' no existe en el contexto actual" no me reconoce la i del for para insertarlo en el

    '@Model[i].ID'

     opcion 2, otra forma que intente  pero el mismo problema

       @for (int i = 0; i < Model.Count; i++)
    	{
                    if (Model[i].ID == valFor)
                    {
                        <text>
                             $('#lblNombre').val(@Model[i].Nombre);
                       </text>
                    }
    	}

    aqui no reconoce el "valfor", que es una variable de javascript.

    Gracias.



    RubenDsc


    • Editado RubenDsc miércoles, 13 de noviembre de 2013 21:18
    miércoles, 13 de noviembre de 2013 21:18

Respuestas

  • Si piensas un poco en lo que estás tratando de hacer, te darás cuenta de por qué no funciona: tanto en el caso 1 como en el caso 2, estás tratando de hacer intervenir una variable de javascript dentro de una expresión de Razor. Pero el Razor se ejecuta primero en el servidor, y una vez que se ha ejecutado, se envía el resultado al navegador, y entonces el navegador comienza a ejecutar el javascript y se crea la variable de javascript. Evidentemente esa variable no puede usarse en el Razor, porque todavía no existía cuando se ejecutó el código Razor (aparte de que para colmo, esa variable existe en otra máquina: el Razor se ejecuta en el servidor y el javascript en el equipo cliente).

    Tendrás que replanterate lo que estás haciendo. Será preciso que primero, desde el código Razor, traspases todos los datos deseados a la página, y que luego el javascript opere sobre los datos recibidos en la página.

    • Marcado como respuesta RubenDsc jueves, 14 de noviembre de 2013 15:08
    jueves, 14 de noviembre de 2013 8:34

Todas las respuestas

  • Si piensas un poco en lo que estás tratando de hacer, te darás cuenta de por qué no funciona: tanto en el caso 1 como en el caso 2, estás tratando de hacer intervenir una variable de javascript dentro de una expresión de Razor. Pero el Razor se ejecuta primero en el servidor, y una vez que se ha ejecutado, se envía el resultado al navegador, y entonces el navegador comienza a ejecutar el javascript y se crea la variable de javascript. Evidentemente esa variable no puede usarse en el Razor, porque todavía no existía cuando se ejecutó el código Razor (aparte de que para colmo, esa variable existe en otra máquina: el Razor se ejecuta en el servidor y el javascript en el equipo cliente).

    Tendrás que replanterate lo que estás haciendo. Será preciso que primero, desde el código Razor, traspases todos los datos deseados a la página, y que luego el javascript opere sobre los datos recibidos en la página.

    • Marcado como respuesta RubenDsc jueves, 14 de noviembre de 2013 15:08
    jueves, 14 de noviembre de 2013 8:34
  • Gracias, teniendo esto en cuenta ya replante lo que quería hacer, y encontré otra forma de hacerlo un poco mas larga pero funciona.

    Gracias.


    RubenDsc

    jueves, 14 de noviembre de 2013 15:08