2015-06-02 33 views
1

內使用剃刀語法在index.cshtml我有類似下面的工作代碼:JavaScript的條件Statment

<script type="text/javascript"> 

if ('@Model.SomeCondition' === 'True'){ 
Do Something(); 
} 

</script> 

=== 'True'似乎是一個奇怪的黑客對我逼剃刀和JavaScript相處。我如何重構使用=== true?這並沒有給出相同的結果。這可以用Razor和JavaScript來完成嗎?

+6

混合剃刀和Javascript是一個壞主意。你應該使用'數據 - *代碼中分離數據'屬性。 – SLaks

回答

3

如果該屬性是bool,您可以在剃刀檢查,如果條件下列方式:

<script type="text/javascript"> 
@if (Model.SomeCondition){ 
@:Do Something(); 
} 
</script> 

或:

<script type="text/javascript"> 
@if (Model.SomeCondition){ 
<text> 
Do Something(); 
</text> 
}  
</script> 
+2

這當然會,評估服務器代碼,只輸出布爾的JavaScript如果爲真。在某些方面比轉向服務器布爾到客戶端的布爾更好的解決方案。 – Jamiec

1

假設SomeCondition是一個字符串,刪除引號,並使其符合JavaScript的布爾

<script language="javascript"> 
    // just to be clear this is javascript, not server code 
    if (@Model.SomeCondition.ToLowerInvariant()){ 
     .. // 
    } 
</script> 

如果小寫形式,但是SomeCondition是在服務器代碼中的布爾,你需要先轉換成串並使其小寫

<script language="javascript"> 
    // just to be clear this is javascript, not server code 
    if (@Model.SomeCondition.ToString().ToLowerInvariant()){ 
     .. // 
    } 
</script> 
0

只要寫在C#中,如果保護 - 諮詢熱點/剃刀要在那裏執行JavaScript。

例子:

@if(boolVariable) 
{ 
    <script> 
     //javascript here 
    </script> 
} 
+0

那很好,如果這就是你的JavaScript要運行的_only_,但如果它是一個較大的塊它並沒有真正的工作 –

+0

那麼的一部分,假設這已經宣佈

  • 11. 的foreach PHP statment
  • 12. JavaScript數組與扁平化,如果statment
  • 13. SQL statment
  • 14. ELSEIF statment
  • 15. 有條件的JavaScript
  • 16. typescript/javascript條件:[]!= []?
  • 17. Javascript多條件?
  • 18. JavaScript條件
  • 19. Javascript條件statetenttent
  • 20. Javascript onkeypress條件
  • 21. MySQL的選擇statment
  • 22. 的Python如果Statment
  • 23. 在if-else的statment
  • 24. 在條件隱藏的條件下的JavaScript條件
  • 25. Array和If Statment
  • 26. php mysql select statment
  • 27. group by + case statment
  • 28. 空在statment
  • 29. If if statment
  • 30. jQuery cookie if statment