js不执行'else'语句

时间:2019-05-30 09:05:17

标签: javascript c# asp.net-mvc

我在JavaScript中有一条if-else语句,该语句返回false,但不执行'else'中的代码。

cshtml文件中的脚本的一部分:

if (@Session["mission"].ToString() != "1") {
    setInterval(function () { myTimer(ctxPoints, ctxLines); }, 1000 / @ViewBag.rate);  
} else {
    alert("hi");
}

在调试中,'@ Session [“ mission”]。ToString()!=“ 1”'语句返回false,但是没有任何内容跳到屏幕上。

2 个答案:

答案 0 :(得分:3)

您应该打开Web浏览器开发者控制台,并查看到达浏览器的真实脚本。

Razor部件@Session["mission"].ToString()在浏览器脚本中不存在,因为在将它们发送到浏览器之前已在服务器中对其进行了评估。因此,在控制台中尝试@Session["mission"].ToString() != "1"毫无意义。在浏览器中,您将得到类似: if (1 != "1") 甚至喜欢 if ( != "1") 这会引发错误。

JavaScript会合并,因此当您使用比较器1"1"时,==等于!=,因此您不需要在值(除非出现上述错误:在这种情况下,如果包含引号,则将得到if ("" != "1"))。

通过使用!=====可以避免结帐,它们会认为1不等于"1",因此,包括引号对此没有任何区别。情况。

答案 1 :(得分:2)

我认为您应该清除Js代码和c#代码

Session["mission"].ToString()

string在c#中使用此打印字符串,但是您需要将其封装在引号中,以使该值获得类型{{1}}