2012-11-23 42 views
20

Tôi muốn thực hiện một mảnh của JavaScript khi một điều kiện nhất định là đúng trong mô hình quan điểm của tôi:có điều kiện thực thi JavaScript trong Razor view

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

Mã này không biên dịch, làm thế nào tôi nên làm điều này?

+0

Đề xuất câu trả lời này để biết thêm thông tin. http://stackoverflow.com/a/32133898/672891 –

Trả lời

29

Hãy thử với điều này:

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

Lưu ý "@:"

+0

Nó không hoạt động, vẫn thực hiện chức năng vô điều kiện – Anton

12

Sử dụng js if-else khối, không phải C#. Js có khối if-else riêng.

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

Nếu bạn có JS phức tạp hơn, bạn có thể làm (tags kịch bản, hoặc bất kỳ thẻ, trong vòng một @if không cần thêm thoát) sau:

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

Chỉ muốn thêm $ 0,02 của tôi ở đây - Điều này làm việc tuyệt vời, và đối với tôi điểm chính là '

0

Đối với kịch bản nhiều dòng trong dao cạo khối có điều kiện, bạn có thể sử dụng:

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

Điều này có thể làm cho nó sạch hơn và thực tế hơn so với việc thêm @: vào mỗi dòng. Mọi thứ trong khối <text></text> được hiển thị dưới dạng tập lệnh.

Các vấn đề liên quan