Estoy bastante confundido con cómo mezclar navaja y js. Esta es la función actual con 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 # <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?
c#
javascript
razor
Kyle Brandt
fuente
fuente

<c#>etiquetas :-PConditional Compilationpara que no pueda ver el HTML, por lo que creo que se siente parte de esto es el código C #.Respuestas:
Uso
<text>:fuente
Scripts.Renderluego llamar a la función en una<script>etiqueta. No es exactamente elegante, pero funciona para la mayoría de los casos de uso (léase: simple).Dentro de un bloque de código (por ejemplo,
@foreach), debe marcar el marcado (o, en este caso, Javascript) con@:o la<text>etiqueta .Dentro de los contextos de marcado, debe rodear el código con bloques de código (
@{ ... }o@if, ...)fuente
@:es lo que estaba buscando, genial!también puedes simplemente usar
note @:
fuente
Nunca mezcles más idiomas.
En caso de problemas también puedes probar
fuente
Uncaught SyntaxError: Unexpected token &debido a que el modelo se convierte en algo como esto[{"Id":1,"Name":"Name}]Un método no convencional para separar javascript de la vista, pero aún así usar razor en él es hacer un
Scripts.cshtmlarchivo y colocar su javascript / razor mezclado allí.Index.cshtml
Scripts.cshtml
fuente
puedes usar la
<text>etiqueta para ambos códigos cshtml con javascriptfuente
Envuelva su código Razor en @ {} cuando esté dentro del script JS y tenga en cuenta el uso de solo @ A veces no funciona:
Esto producirá
en el navegador = (
fuente