【问题标题】:Boolean variable from ViewModel can't be used as a conditional in ViewViewModel 中的布尔变量不能用作 View 中的条件
【发布时间】:2014-08-29 22:50:18
【问题描述】:

所以我试图在我的视图加载时执行一个脚本。问题是,每当我使用布尔变量作为条件时,结果总是 True,即使它被识别为 False 值。

更具体地说:

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

输出

False
True

或

True
True

脚本似乎可以识别变量的正确值,但是当它尝试将其用作条件时立即忘记了它。我什至尝试将它存储在一个临时变量中,但仍然会发生同样的事情。

这有什么原因吗?我似乎无法通过谷歌找到任何信息,这让我发疯。

谢谢!

【问题讨论】:

    标签: javascript asp.net viewmodel


    【解决方案1】:

    在 Javascript 中,如果字符串"False" 等于undefined,则条件评估,因为它不是undefined,它评估为true。

    将变量解析为布尔值或以这种方式使用警报;

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

    【讨论】:

      【解决方案2】:

      这可能是因为您将变量用单引号括起来。尝试删除引号。

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

      【讨论】:

      • 修改了代码。由于 MVC 将 bool 呈现为 'False' 或 'True' 并且它们在 Javascript 中不是有效的文字,因此将引发错误。所以将布尔值转换为小写。可能有更好的解决方案。
      猜你喜欢
      • 2022-10-08
      • 2013-05-15
      • 2018-06-16
      • 2021-11-20
      • 1970-01-01
      • 2012-06-06
      • 2015-08-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多