Я довольно смущен тем, как смешивать бритву и JS. Это текущая функция, с которой я застрял:
<script type="text/javascript">
var data = [];
@foreach (var r in Model.rows)
{
data.push([ @r.UnixTime * 1000, @r.Value ]);
}
Если бы я мог объявить код на c #, <c#></c#>
а все остальное было кодом JS - это было бы то, что я хочу после:
<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#>
Каков наилучший метод для достижения этой цели?
c#
javascript
razor
Кайл Брандт
источник
источник
<c#>
тегами :-PConditional Compilation
так что я не вижу HTML - поэтому я считаю, что это часть кода C #.Ответы:
Используйте
<text>
:источник
Scripts.Render
, затем вызвать функцию в<script>
теге. Не совсем изящный, но он работает для большинства (читай: простых) вариантов использования.Внутри блока кода (например,
@foreach
) вы должны пометить разметку (или, в данном случае, Javascript) с помощью@:
или<text>
тега .Внутри контекстов разметки вам необходимо окружить код кодовыми блоками (
@{ ... }
или@if
, ...)источник
@:
это то, что я искал, отлично!Вы также можете просто использовать
примечание @:
источник
Никогда не смешивайте больше языков.
В случае проблем вы также можете попробовать
источник
Uncaught SyntaxError: Unexpected token &
потому что модель становится чем-то вроде этого[{"Id":1,"Name":"Name}]
Нетрадиционный метод отделения javascript от представления, но использование в нем бритвы - создание
Scripts.cshtml
файл и поместить туда свой смешанный javascript / razor.Index.cshtml
Scripts.cshtml
источник
Вы можете использовать
<text>
тег для обоих cshtml-кода с JavaScriptисточник
Оберните свой код Razor в @ {}, когда находитесь внутри JS-скрипта, и помните, что просто используйте @ Иногда это не работает:
Это будет производить
в браузере = (
источник