2014-08-29 47 views
0

所以我想在我的視圖加載時執行腳本。問題是,無論何時我使用布爾變量作爲條件,結果總是爲True,即使它被識別爲False值。來自ViewModel的布爾變量不能作爲條件在視圖中使用

更具體地說:

<script type="text/javascript"> 
    $(document).ready(function() { 
     alert('@Model.MyBool'); 
     alert('@Model.MyBool' ? "True" : "False"); 
    }); 
</script> 

輸出

False 
True 

OR

True 
True 

看來,該腳本可以識別變量的正確值,但瞬間忘記它時,它試圖將其用作條件。我甚至嘗試將它存儲在一個臨時變量中,並且仍然發生同樣的事情。

這是否有任何理由?我似乎無法通過谷歌找到任何信息,這讓我發瘋。

謝謝!

回答

0

JavaScript中的條件evals如果字符串"False"等於undefined,因爲它不是undefined它evals到true

將變量解析爲布爾值或使用此方法使用警報;

alert('@Model.MyBool' === "True" ? "True" : "False"); 
0

這可能是因爲你用單引號包裝變量。嘗試刪除引號。

alert(@Model.MyBool.ToString().ToLower() ? "True" : "False"); 
+0

刪除單引號會引發語法錯誤 – user3799284 2014-08-30 15:29:36

+0

修改了代碼。由於MVC將bool呈現爲'False'或'True',並且這些不是Javascript中的有效文字,因此會引發錯誤。所以將bool值轉換爲小寫。 那裏可能有更好的解決方案。 – Alex 2014-08-30 17:31:21