这是我的布局
<html>
@{ bool isAdmin = true; }
if(isAdmin)
{
//the breakpoint hits here
}
</html>
<script type="text/javascript">
function someFunction()
{
if(isAdmin){ //my breakpoint doesnt hit here}
}
$(document).ready(function()
{
@if(isAdmin){ //my breakpoint hits here}
somefunction();
}
</script>
为什么我的全局变量在 html 和 javascript 中的 html/razor 中都是可见的,但从 javascript 中的函数中却看不到它。这对我来说没有意义。另外,如果我尝试将 @isAdmin 添加到函数参数,我得到的错误是“True is undefined”,如果我 .ToLower() “True”,错误是“意外的 token true”
最佳答案
第二个断点命中的原因是 Razor 引擎识别了 @if
,因此您的 isAdmin
被正确使用。看来在 JavaScript 部分中使用 @isAdmin
将尝试使用变量的值作为 JavaScript 变量的标识符(我不确定这是否真的发生了。经过一些测试,情况似乎如此;因此,“[变量的值]未定义。”)。有两种方法可以解决这个问题:
在编写常规 JS 时,将您的
isAdmin
值作为字符串,然后转换为 bool。if (!!"@isAdmin")
使用此语法从 razor 转到 JS:
@if (isAdmin)//这里是 Razor { @:console.log('hello!')//@: 导致该行被解释为 JS。 }
关于javascript - 如何使用同一页面上的 HTML/Razor 和 javascript 都可见的全局变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40536894/