我在JavaScript中有一个if-else语句,它返回false,但不在'else‘中执行代码。
cshtml文件中脚本的一部分:
if (@Session["mission"].ToString() != "1") {
setInterval(function () { myTimer(ctxPoints, ctxLines); }, 1000 / @ViewBag.rate);
} else {
alert("hi");
}在调试过程中,‘@Session“任务”.ToString() !=“1”语句返回false,但是屏幕上没有任何东西。
发布于 2019-05-30 17:21:38
您应该打开您的web浏览器开发人员控制台,并看到到达浏览器的真实脚本。
Razor部件,@Session["mission"].ToString()不存在于浏览器脚本中,因为它们在发送到浏览器之前会在服务器中进行计算。因此,在控制台中尝试@Session["mission"].ToString() != "1"是没有意义的。在浏览器中,你会得到类似于:if (1 != "1"),甚至像if ( != "1")这样的内容,这会导致一个错误。
JavaScript进行合并,因此在使用比较器==或!=时,1等于"1",因此不需要在值两边包含qoutes (除非遇到上面提到的错误:在本例中,如果包含引号,则会得到if ("" != "1"))。
通过使用!==或===来避免合并,这会认为1不等于"1",所以在这种情况下,包括引号不会有任何不同。
发布于 2019-05-30 17:12:19
我认为你应该清除Js代码和c#代码
if ("@Session["mission"].ToString()" != "1")在c#中Session["mission"].ToString()此打印字符串,但您需要将其封装在引号中,以使此值获得类型string
https://stackoverflow.com/questions/56375031
复制相似问题