Jestem dość zdezorientowany, jak mieszać brzytwę i js. To jest obecna funkcja, z którą utknąłem:
<script type="text/javascript">
var data = [];
@foreach (var r in Model.rows)
{
data.push([ @r.UnixTime * 1000, @r.Value ]);
}
Gdybym mógł zadeklarować kod C # z, <c#></c#>
a wszystko inne było kodem JS - to byłby to, czego szukam:
<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#>
Jaka jest najlepsza metoda, aby to osiągnąć?
c#
javascript
razor
Kyle Brandt
źródło
źródło
<c#>
tagami :-PConditional Compilation
tym, że nie widzę kodu HTML - więc wydaje mi się, że częścią tego jest kod C #.Odpowiedzi:
Zastosowanie
<text>
:źródło
Scripts.Render
, a następnie wywołaj funkcję w<script>
tagu. Niezupełnie wdzięczne, ale działa w większości (czytaj: prostych) przypadkach użycia.Wewnątrz bloku kodu (na przykład
@foreach
), trzeba zaznaczyć znaczników (lub w tym przypadku, JavaScript) z@:
lub<text>
znacznik .W kontekstach znaczników musisz otoczyć kod blokami kodu (
@{ ... }
lub@if
, ...)źródło
@:
jest tym, czego szukałem, świetnie!możesz też po prostu użyć
uwaga @:
źródło
Nigdy, przenigdy nie mieszaj więcej języków.
W razie problemu możesz również spróbować
źródło
Uncaught SyntaxError: Unexpected token &
ponieważ model staje się[{"Id":1,"Name":"Name}]
Niekonwencjonalną metodą oddzielenia javascript od widoku, ale nadal używania w nim brzytwy, jest utworzenie
Scripts.cshtml
pliku i umieszczenie w nim mieszanego javascript / brzytwa.Index.cshtml
Scripts.cshtml
źródło
możesz użyć
<text>
tagu zarówno dla kodu cshtml z javascriptźródło
Umieść swój kod Razor w @ {} wewnątrz skryptu JS i pamiętaj, że używasz tylko @ Czasami to nie działa:
To wyprodukuje
w przeglądarce = (
źródło