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 Compilation
para 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.Render
luego 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.cshtml
archivo 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