2012-11-23 61 views
20

有条件执行JavaScript,我想在一定条件下,我认为模型是真,则执行一段JavaScript代码:在Razor视图

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

此代码不能编译,我应该怎么办呢?

+0

请参阅此答案以了解更多信息。 http://stackoverflow.com/a/32133898/672891 –

回答

29

试试这个:

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

注意 “@:

+0

它不起作用,仍然无条件地执行该功能 – Anton

12

用JS if-else块,不C#。 Js拥有自己的if-else区块。

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

如果你有更复杂的JS,你可以做以下(script标签,或任何标签,一个@if内不需要额外的转义):

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

只是想在这里添加我的$ 0.02 - 这很好,对我来说关键点是'

0

对于剃刀条件块中多行脚本,你可以使用:

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

这可以使它比添加@:每行更清晰和更实用。 <text></text>块中的所有内容都呈现为脚本。