Pregunta

Tener # código de problema de incrustación c dentro de un bloque Javascript con MVC3 RC1 vista de la maquinilla de afeitar. Lo sintaxis debo usar para hacer este trabajo? Consigo advertencias por ejemplo. constante esperado de la variable Isok entre otros. (Sin la etiqueta de texto, el siguiente código no se reconoce como JavaScript)

@{bool isOk = true;}

<script type="text/javascript">
    var tmp1 = "";
    @if (isOk)
    { 
        <text>
            var tmp=""; // this should be interpreted as javascript
        </text>       
    }
</script>
¿Fue útil?

Solución

Se necesita la etiqueta <text> para indicar que el contenido no se evalúa en el servidor. Por ejemplo:

@{
    var isOK = true;
}

<script type="text/javascript">
    var tmp1 = "";
    @if (isOK)
    { 
        <text>
            var tmp = "foo";
        </text>       
    }
</script>

salida voluntad en la página resultante:

<script type="text/javascript">
    var tmp1 = "";
    var tmp = "foo";
</script>

En lo que se refiere a la advertencia Expected Constant, así, la maquinilla de afeitar Intellisense todavía está en beta por lo que es lejos de ser perfecto. Es sólo una advertencia puede ignorar. Lo importante es lo que la aplicación funciona y emite HTML válido. Espero que esto es algo que va a ser fijo en el producto final. Por experiencia personal las únicas advertencias que la confianza son el emitido por el compilador de C #. Cuando estoy trabajando en una vista que con seguridad ignorar todas las advertencias de mierda que emite Visual Studio porque saben que es un error.

Otros consejos

Una alternativa (más concisa y fácil de leer OMI) es escapar de vuelta al texto de la siguiente manera:

<script type="text/javascript"> 
    var tmp1 = ""; 
    @if (isOK) 
    {  
        @:var tmp = "foo";
    } 
</script> 
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top