Estou bastante confuso com a forma de misturar navalha e js. Esta é a função atual com a qual estou preso:
<script type="text/javascript">
var data = [];
@foreach (var r in Model.rows)
{
data.push([ @r.UnixTime * 1000, @r.Value ]);
}
Se eu pudesse declarar o código c # com <c#></c#>
e tudo o mais fosse código JS - seria o que eu procuraria depois:
<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#>
Qual é o melhor método para conseguir isso?
c#
javascript
razor
Kyle Brandt
fonte
fonte
<c#>
marcas bem :-PConditional Compilation
então não consigo ver o HTML - então acredito que isso faz parte do código C #.Respostas:
Use
<text>
:fonte
Scripts.Render
e chame-a em uma<script>
tag. Não é exatamente elegante, mas funciona para a maioria dos casos de uso (leia-se: simples).Dentro de um bloco de código (por exemplo,
@foreach
), você precisa marcar a marcação (ou, neste caso, Javascript) com@:
ou a<text>
tag .Dentro dos contextos de marcação, você precisa cercar o código com blocos de código (
@{ ... }
ou@if
, ...)fonte
@:
é o que eu estava procurando, ótimo!você também pode simplesmente usar
note @:
fonte
Nunca misture mais idiomas.
Em caso de problema, você também pode tentar
fonte
Uncaught SyntaxError: Unexpected token &
porque o modelo se torna algo como isto[{"Id":1,"Name":"Name}]
Um método não convencional para separar o javascript da visualização, mas ainda assim usar o barbeador, é criar um
Scripts.cshtml
arquivo e colocar seu javascript / barbeador misto lá.Index.cshtml
Scripts.cshtml
fonte
você pode usar a
<text>
tag para o código cshtml com javascriptfonte
Coloque seu código Razor em @ {} quando estiver dentro do script JS e esteja ciente de usar apenas @ Às vezes, não funciona:
Isso produzirá
no navegador = (
fonte