script mvc dentro codigo c# javascript razor

c# - mvc - Mezcle Razor y código de Javascript



razor script javascript (5)

Estoy bastante confundido con la forma de mezclar razor y js. Esta es la función actual a la que estoy atascado:

<script type="text/javascript"> var data = []; @foreach (var r in Model.rows) { data.push([ @r.UnixTime * 1000, @r.Value ]); }

Si pudiera declarar el código c # con <c#></c#> y todo lo demás fuera código JS, esto sería lo que busco:

<script type="text/javascript"> var data = []; <c#>@foreach (var r in Model.rows) {</c#> data.push([ <c#>@r.UnixTime</c#> * 1000, <c#>@r.Value</c#> ]); <c#>}</c#>

¿Cuál es el mejor método para lograr esto?


Dentro de un bloque de código (por ejemplo, @foreach ), debe marcar el marcado (o, en este caso, Javascript) con @: o la etiqueta <text> .

Dentro de los contextos de marcado, debe rodear el código con bloques de código ( @{ ... } o @if , ...)


Envuelva su código Razor en @ {} cuando esté dentro de la secuencia de comandos JS y tenga en cuenta el uso de solo @ Algunas veces no funciona:

function hideSurveyReminder() { @Session["_isSurveyPassed"] = true; }

Esto producirá

function hideSurveyReminder() { False = true; }

en el navegador = (


Nunca más mezcles más idiomas.

<script type="text/javascript"> var data = @Json.Encode(Model); // !!!! export data !!!! for(var prop in data){ console.log( prop + " "+ data[prop]); }


Use <text> :

<script type="text/javascript"> var data = []; @foreach (var r in Model.rows) { <text> data.push([ @r.UnixTime * 1000, @r.Value ]); </text> } </script>


también puedes simplemente usar

<script type="text/javascript"> var data = []; @foreach (var r in Model.rows) { @:data.push([ @r.UnixTime * 1000, @r.Value ]); } </script>

nota @: