Je suis assez confus avec comment mélanger le rasoir et js. C'est la fonction actuelle avec laquelle je suis coincé:
<script type="text/javascript">
var data = [];
@foreach (var r in Model.rows)
{
data.push([ @r.UnixTime * 1000, @r.Value ]);
}
Si je pouvais déclarer du code c # avec <c#></c#>
et que tout le reste était du code JS - ce serait ce que je veux:
<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#>
Quelle est la meilleure méthode pour y parvenir?
c#
javascript
razor
Kyle Brandt
la source
la source
<c#>
balises également :-PConditional Compilation
je ne peux pas voir le HTML - donc je pense que cela fait partie du code C #.Réponses:
Utilisez
<text>
:la source
Scripts.Render
, puis appeler la fonction dans une<script>
balise. Pas vraiment gracieux, mais cela fonctionne pour la plupart des cas d'utilisation (lire: simples).À l'intérieur d'un bloc de code (par exemple
@foreach
), vous devez marquer le balisage (ou, dans ce cas, Javascript) avec@:
ou la<text>
balise .Dans les contextes de balisage, vous devez entourer le code avec des blocs de code (
@{ ... }
ou@if
, ...)la source
@:
c'est ce que je cherchais, super!vous pouvez également utiliser simplement
note @:
la source
Ne mélangez jamais plus de langues.
En cas de problème, vous pouvez également essayer
la source
Uncaught SyntaxError: Unexpected token &
parce que le modèle devient quelque chose comme ça[{"Id":1,"Name":"Name}]
Une méthode non conventionnelle pour séparer javascript de la vue, tout en utilisant un rasoir, consiste à créer un
Scripts.cshtml
fichier et à y placer votre javascript / rasoir mixte.Index.cshtml
Scripts.cshtml
la source
vous pouvez utiliser la
<text>
balise pour le code cshtml avec javascriptla source
Enveloppez votre code Razor dans @ {} lorsque vous êtes dans le script JS et soyez conscient de n'utiliser que @ Parfois, cela ne fonctionne pas:
Cela produira
dans le navigateur = (
la source