我在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,但是没有任何内容跳到屏幕上。
答案 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}}