c# - Sekoita Razor- ja Javascript-koodia
Olen melko hämmentynyt siitä, miten yhdistää Razor ja JS. Tämä on nykyinen funktio, johon olen jumissa:
<script type="text/javascript">
var data = [];
@foreach (var r in Model.rows)
{
data.push([ @r.UnixTime * 1000, @r.Value ]);
}
Jos voisin määritellä c#-koodin <c#></c#> ja kaikki muu olisi JS-koodia -- tämä olisi se, mitä haen:
<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#>
Mikä on paras tapa saavuttaa tämä?
Vastaus #1
Käytä <text>:
<script type="text/javascript">
var data = [];
@foreach (var r in Model.rows)
{
<text>
data.push([ @r.UnixTime * 1000, @r.Value ]);
</text>
}
</script>
Vastaus #2
Koodilohkon sisällä (esim. @foreach) sinun täytyy merkitä merkintäkieli (tai tässä tapauksessa Javascript) @:-merkinnällä tai <text>-tagilla.
Merkintäyhteyksissä sinun täytyy kietoa koodi koodilohkoihin (@{ ... } tai @if, ...).
Vastaus #3
voit myös yksinkertaisesti käyttää
<script type="text/javascript">
var data = [];
@foreach (var r in Model.rows)
{
@:data.push([ @r.UnixTime * 1000, @r.Value ]);
}
</script>
huomaa @:
Vastaus #4
Älä koskaan sekoita useampaa kieltä.
<script type="text/javascript">
var data = @Json.Encode(Model); // !!!! export data !!!!
for(var prop in data){
console.log( prop + " "+ data[prop]);
}
Ongelman sattuessa voit myös yrittää
@Html.Raw(Json.Encode(Model));
