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 @: