Смешайте Razor и Javascript код - PullRequest
160 голосов
/ 11 апреля 2011

Я не совсем понимаю, как смешивать бритву и js.Это текущая функция, с которой я застрял:

<script type="text/javascript">

        var data = [];

        @foreach (var r in Model.rows)
        {
                data.push([ @r.UnixTime * 1000, @r.Value ]);
        }

Если бы я мог объявить код c # с помощью <c#></c#>, а все остальное было кодом JS - это было бы то, что я хочу:*

Каков наилучший метод для достижения этой цели?

Ответы [ 6 ]

315 голосов
/ 11 апреля 2011

Использование <text>:

<script type="text/javascript">

   var data = [];

   @foreach (var r in Model.rows)
   {
      <text>
            data.push([ @r.UnixTime * 1000, @r.Value ]);
      </text>
   }
</script>
79 голосов
/ 11 апреля 2011

Внутри блока кода (например, @foreach) необходимо пометить разметку (или, в данном случае, Javascript) с помощью @: или тега <text> .

Внутри контекстов разметки вам необходимо окружить код кодовыми блоками (@{ ... } или @if, ...)

48 голосов
/ 23 мая 2014

Вы также можете просто использовать

<script type="text/javascript">

   var data = [];

   @foreach (var r in Model.rows)
   {
       @:data.push([ @r.UnixTime * 1000, @r.Value ]);
   }
</script>

note @:

11 голосов
/ 29 апреля 2016

Никогда не смешивайте больше языков.

<script type="text/javascript">
    var data = @Json.Encode(Model); // !!!! export data !!!!

    for(var prop in data){
      console.log( prop + " "+ data[prop]);
    }
0 голосов
/ 26 ноября 2018

вы можете использовать тег <text> для обоих cshtml-кода с javascript

0 голосов
/ 10 ноября 2015

Оберните свой код Razor в @ {} внутри скрипта JS и помните, что просто используйте @ Иногда это не работает:

function hideSurveyReminder() {
       @Session["_isSurveyPassed"] = true;
    }

Это даст

function hideSurveyReminder() {
       False = true;
    }

в браузере = (

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...