59 votos

navaja/javascript y el punto y coma final

El uso de Visual Studio 2012, en una maquinilla de Afeitar de la vista página, en la sección de javascript, me estoy haciendo lo que creo que es una batalla entre la sintaxis de Afeitar vs la sintaxis de JavaScript. En particular, el punto y coma final en la sección de secuencia de comandos está marcado por intellisense y una advertencia del compilador (no error): "Advertencia 13 error de Sintaxis'. Si me la quita, luego me pongo una declaración de terminación de la recomendación (Resharper en este caso, sino simplemente buena práctica).

<script type="text/javascript">
    $().ready(function(){
        var customer = @Html.Raw(ViewBag.CustomerJSON);  // <- Razor (I think) doesn't like this semicolon
    });
</script>    

Es esto un error en la máquina de Afeitar? Si es así, ¿hay una manera que puede volver a escribir esto para evitar este problema?

66voto

Darin Dimitrov Puntos 528142

Es esto un error en la máquina de Afeitar?

Absolutamente no. Ejecutar la aplicación y funcionará como se espera.

Se trata de un bug en las herramientas que utiliza (VS2012, Resharper, ...) que son incapaces de reconocer perfectamente válida la sintaxis y la advertencia sobre algo que no debe ser advertido acerca de. Usted podría tratar de abrir un tema en el sitio de Microsoft Connect y la señalización de este error si es que no se ha hecho ya.

23voto

Mirko Puntos 1871

Desde esta parece estar ocurriendo y es una molestia me di cuenta de que, al menos, deja que los demás sepan lo terminé usando como un "hack". No quiero ignorar la advertencia y prefiere aceptar una hokier sintaxis (y sí alguien va a decir que esto va a matar rendimiento :))

Lo que yo uso como una solución alternativa es utilizar un cliente de lado la adición al final. Para mí este error se produjo en la definición de un entero constante, por lo que

window.foo = @(Model.Something);

me dio los buenos viejos punto y coma error. Simplemente he cambiado esto:

window.foo = @Model.Something + 0;

(En las referidas preguntas en caso de que usted debe ser capaz de agregar",+".

Sé que hay toda otra adición sucediendo en el cliente y no es elegante, pero evitar el error. Para usarlo o no, pero yo prefiero este, viendo la advertencia/error.

Si alguien sabe de un server-side sintáctica solución para esto prefiero esta a el lado del cliente uno, así que por favor añadir.

3voto

BRICHARDSON Puntos 36

Esto funcionó para mí:

var customer = @Html.Raw(ViewBag.CustomerJSON + ";")

1voto

Serj Sagan Puntos 2731

He aquí una solución para booleanos:

var myBool = @(Model.MyBool ? "true;" : "false;")

0voto

WillC Puntos 424

Este es un problema con Visual Studio 2012. Estoy teniendo el mismo problema:

Actualización .neto de 4 a 4,5 rompe Html.Raw llamada en Javascript

No he encontrado la sintaxis que corrige los errores y no romper en VS 2010.

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X