MVC 3 Razor, как сделать сложный javascript условным? - PullRequest
5 голосов
/ 11 марта 2012

У меня есть этот многострочный фрагмент JavaScript:

$.getJSON('@Url.Action("ReconBases")', 
          { modelId: selectedModelId },
          function(selectItems) { 
            buildDropDown('#SelectedReconId', selectItems); 
          });

Я хочу условно добавить этот скрипт на страницу на основе переменной модели представления, например:

@if ( Model.GetBases )
{
  <snippet above>
}

Может кто-нибудь сказать мне, если это возможно и правильный синтаксис для этого?Я пытался использовать @: и Html.Raw, но я не могу найти правильный формат для его работы.

Ответы [ 2 ]

14 голосов
/ 11 марта 2012

Выходной код внутри условного выражения в Razor должен быть окружен HTML-тегами, такими как <div></div> (это «помечает» его как выходной, а не код C #).

Если какой-либо конкретный тег не соответствует вашим потребностям, вы можете использовать специальный <text></text>, относящийся к Razor. Это НЕ , выводимых во время рендеринга.

@if ( Model.GetBases )
{
  <text>
    <snippet above>
  </text>
}

Это также относится к for, foreach и т. Д.

3 голосов
/ 21 августа 2015

Вы также можете сделать условие c # с помощью некоторого фрагмента кода здесь.

Многострочный код JavaScript

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

@if ( Model.SomeProp == true)
{
  <text>
    <Your javaScript Multi-line  code>
  </text>
}

Однострочный код JavaScript

Использование @:

@if ( Model.SomeProp == true)
{  
    @:<Your javaScript single code>  
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...