js не выполняет оператор else - PullRequest
0 голосов
/ 30 мая 2019

У меня есть оператор if-else в JavaScript, который возвращает 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 ]

3 голосов
/ 30 мая 2019

Вам следует открыть консоль разработчика веб-браузера и увидеть реальный скрипт, который достигает браузера.

Детали Razor @Session["mission"].ToString() не существуют в скрипте браузера, поскольку они оцениваются на сервере перед отправкой их в браузер. Так что нет смысла пробовать @Session["mission"].ToString() != "1" в консоли. В браузере вы получите что-то вроде: if (1 != "1") или даже как if ( != "1") что вызвало бы ошибку.

JavaScript выполняет объединение, поэтому 1 равно "1", когда вы используете компараторы == или !=, поэтому вам не нужно включать кавычки вокруг значения (если только вы не получите упомянутую ошибку выше: в этом случае, если вы включите кавычки, вы получите if ("" != "1")).

Слияния можно избежать, используя !== или ===, который будет считать 1 не равным "1", поэтому включение кавычек в этом случае не имеет значения.

2 голосов
/ 30 мая 2019

Я думаю, вам следует очистить код Js и код c #

if ("@Session["mission"].ToString()" != "1")

Session["mission"].ToString() эту строку для печати в c #, но вам нужно заключить ее в кавычки, чтобы это значение получило тип string

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...