Представления Asp.Net MVC3 RC Razor: синтаксис для встраивания кода в блок <javascript> - PullRequest
18 голосов
/ 17 ноября 2010

Не удается встроить код c # в блок javascript с помощью MVC3 RC1 вида бритвы Какой синтаксис я должен использовать, чтобы это работало? Я получаю предупреждения, например. Ожидаемая константа для переменной isOk среди других. (Без текстового тега следующий код не распознается как javascript)

@{bool isOk = true;}

<script type="text/javascript">
    var tmp1 = "";
    @if (isOk)
    { 
        <text>
            var tmp=""; // this should be interpreted as javascript
        </text>       
    }
</script>

Ответы [ 2 ]

28 голосов
/ 17 ноября 2010

Вам нужен тег <text>, чтобы указать, что содержимое не оценивается на сервере.Например:

@{
    var isOK = true;
}

<script type="text/javascript">
    var tmp1 = "";
    @if (isOK)
    { 
        <text>
            var tmp = "foo";
        </text>       
    }
</script>

выведет на итоговой странице:

<script type="text/javascript">
    var tmp1 = "";
    var tmp = "foo";
</script>

Что касается предупреждения Expected Constant, то Razor Intellisense все еще находится в бета-версии, поэтому покаот идеального.Это просто предупреждение, которое вы можете спокойно проигнорировать.Важно то, что приложение работает и выдает корректный HTML.Надеюсь, что это то, что будет исправлено в конечном продукте.Исходя из личного опыта, единственное предупреждение, которому я доверяю, это то, которое генерирует компилятор C #.Когда я работаю в представлении, я спокойно игнорирую все дрянные предупреждения, которые выдает Visual Studio, потому что я знаю, что это неправильно.

9 голосов
/ 18 ноября 2010

Альтернатива (более краткая и более легкая для чтения IMO) - вернуться к тексту следующим образом:

<script type="text/javascript"> 
    var tmp1 = ""; 
    @if (isOK) 
    {  
        @:var tmp = "foo";
    } 
</script> 
...