【问题标题】:else block being executed when first condition is satisfied满足第一个条件时执行 else 块
【发布时间】:2019-10-03 22:52:25
【问题描述】:

我知道有很多这类问题,但我找不到一个能回答根本问题的问题。

我有一个简单的代码块,其中 IF 条件为真,但 else 块仍然执行。我已经在调试控制台中检查了该条件确实为真。

    if (@Model.MajorAvailable.ToString().ToLower() == 'true') {
        $("#checkyes").attr('checked', true);
    } else {
        $("#checkno").attr('checked', true);
    }

【问题讨论】:

  • 这不可能发生。 console.log(@Model.MajorAvailable.ToString().ToLower())的输出是什么
  • 您应用中的其他元素的行为异常 - 您粘贴的内容没有问题。
  • 我们可以看一下这段代码是从哪里调用的吗?看起来它要么是一个带有一些奇怪检查的循环,要么你在别处修改了你的checkno
  • @Dan 是的,可能是这样
  • @Lukasz032 它只是在脚本的文档准备部分中

标签: javascript jquery asp.net-mvc razor


【解决方案1】:
if (@Model.MajorAvailable.ToString().ToLower() == true) {
    $("#checkyes").attr('checked', true);
} else {
    $("#checkno").attr('checked', true);
}

这段代码看起来不错,但正如@Bravo 所说,您仍在将字符串与布尔值进行比较。 @Model.MajorAvailable.ToString().ToLower() 这一行返回搅拌对吗?

【讨论】:

  • 'true' 不是布尔值,它实际上是一个字符串。
【解决方案2】:

从 'true' 中删除引号似乎有效 - 这很奇怪,因为该值不再是布尔值,因为 ToString() 已被调用

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-28
    • 2020-01-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多