Javascript ViewModel中的布尔变量可以';在视图中不能用作条件
因此,我试图在加载视图时执行脚本。问题是,每当我使用布尔变量作为条件时,结果总是真的,即使它被识别为假值 更具体地说:Javascript ViewModel中的布尔变量可以';在视图中不能用作条件,javascript,asp.net,viewmodel,Javascript,Asp.net,Viewmodel,因此,我试图在加载视图时执行脚本。问题是,每当我使用布尔变量作为条件时,结果总是真的,即使它被识别为假值 更具体地说: <script type="text/javascript"> $(document).ready(function () { alert('@Model.MyBool'); alert('@Model.MyBool' ? "True" : "False"); }); </script> 或 脚本似乎可以
<script type="text/javascript">
$(document).ready(function () {
alert('@Model.MyBool');
alert('@Model.MyBool' ? "True" : "False");
});
</script>
或
脚本似乎可以识别变量的正确值,但当它尝试将其用作条件时,会立即忘记它。我甚至尝试过将它存储在一个临时变量中,但同样的事情仍然发生
这有什么原因吗?我似乎无法通过谷歌找到任何信息,这让我发疯
谢谢 这可能是因为您将变量用单引号括起来。尝试删除引号
alert(@Model.MyBool.ToString().ToLower() ? "True" : "False");
在Javascript中,如果字符串
“False”
等于未定义
,则条件求值,因为它不是未定义
,它求值为真
将变量解析为布尔值或以这种方式使用警报
alert('@Model.MyBool' === "True" ? "True" : "False");
修改了代码。由于MVC将bool呈现为“False”或“True”,并且这些在Javascript中不是有效的文本,因此将抛出错误。因此,将bool值转换为小写。也许有更好的解决办法。
alert(@Model.MyBool.ToString().ToLower() ? "True" : "False");
alert('@Model.MyBool' === "True" ? "True" : "False");