Подтвердить что ты не робот

Условно исполнение JavaScript в режиме Razor

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

<script type="text/javascript">
    @if (Model.Employees.Count > 1)
    {
        executeJsfunction();
    }
</script>

Этот код не компилируется, как мне это сделать?

4b9b3361

Ответ 1

Попробуйте следующее:

<script type="text/javascript">
    @if (Model.Employees.Count > 1)
    {
        @:executeJsfunction();
    }
</script>

Обратите внимание на " @:"

Ответ 2

Используйте блок js if-else, а не С#. Js имеет свой собственный блок if-else.

<script type="text/javascript">
if (@Model.Employees.Count > 1)
{
    executeJsfunction();
}
</script>

Ответ 3

Если у вас более сложная JS, вы можете сделать следующее (теги script или любые теги в пределах @if не требуют дополнительного экранирования):

@if (Model.Employees.Count > 1)
{
    <script type="text/javascript">
        $(function() {
            executeJsfunction();
        });
    </script>
}

Ответ 4

Для многострочного скрипта в условном блоке бритвы вы можете использовать:

<script type="text/javascript">
    @if (Model.Employees.Count > 1)
    {
       <text>
            executeJsfunctionOne();
            executeJsfunctionTwo();
            executeJsfunctionThree({
               "var_one": true,
               "var_two": false
            });
       </text>
    }
</script>

Это может сделать его чище и практичнее, чем добавление @: к каждой строке. Все в блоках <text></text> отображается как скрипт.

Ответ 5

Я знаю этот вопрос ранее, но я добавил новое решение в качестве альтернативного решения:

вы можете ввести свое значение из модели в атрибут данных выбранного элемента DOM и проверить свое состояние, проверив значение того же атрибута данных, который вы ввели при создании вашего представления.

например, проверьте следующее представление и фрагмент кода script, как это сделать:

<div id="myDiv" data-count="@Model.Employees.Count">
</div>


<script>

  if($("#myDiv").data("count") > 1){
    executeJsfunction();
  }

</script>

Ответ 6

В случае, если вы не хотите даже визуализировать Java-скрипт на основе какого-либо условия

определить раздел в вашем макете HTML

<html> 
<body>  
   @RenderSection("xyz", required: false) 
</body> 
</html>

по вашему мнению

@if (Model.Condition)
{
   @section xyz{
      <script>
        $(function () {
             // Your Javascript
         });
    </script>
   }
}

В моем случае я не хочу показывать свой Javascript, если эта функция не включена, также это уменьшит размер страницы