c# - Mélanger le code Razor et Javascript
Je suis assez confus sur la façon de mélanger Razor et JS. Voici 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 recherche :
<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 ?
Réponse #1
Utilisez <text> :
<script type="text/javascript">
var data = [];
@foreach (var r in Model.rows)
{
<text>
data.push([ @r.UnixTime * 1000, @r.Value ]);
</text>
}
</script>
Réponse #2
À l'intérieur d'un bloc de code (par exemple, @foreach), vous devez marquer le balisage (ou, dans ce cas, le Javascript) avec @: ou la balise <text>.
Dans les contextes de balisage, vous devez entourer le code avec des blocs de code (@{ ... } ou @if, ...).
Réponse #3
vous pouvez aussi simplement utiliser
<script type="text/javascript">
var data = [];
@foreach (var r in Model.rows)
{
@:data.push([ @r.UnixTime * 1000, @r.Value ]);
}
</script>
note @ :
Réponse #4
Ne mélangez jamais plus de langues.
<script type="text/javascript">
var data = @Json.Encode(Model); // !!!! export data !!!!
for(var prop in data){
console.log( prop + " "+ data[prop]);
}
En cas de problème, vous pouvez également essayer
@Html.Raw(Json.Encode(Model));
