javascript - 如何使用同一页面上的 HTML/Razor 和 javascript 都可见的全局变量

标签 javascript html razor global-variables

这是我的布局

<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 变量的标识符(我不确定这是否真的发生了。经过一些测试,情况似乎如此;因此,“[变量的值]未定义。”)。有两种方法可以解决这个问题:

  1. 在编写常规 JS 时,将您的 isAdmin 值作为字符串,然后转换为 bool。 if (!!"@isAdmin")

  2. 使用此语法从 razor 转到 JS:

    @if (isAdmin)//这里是 Razor { @:console.log('hello!')//@: 导致该行被解释为 JS。 }

关于javascript - 如何使用同一页面上的 HTML/Razor 和 javascript 都可见的全局变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40536894/

相关文章:

javascript - 用鼠标单击缩放图表作为弹出全屏( Highcharts )?

javascript - Lifo Typeahead 新 dom 元素

css - 如何在网格显示的每一下一行中给出一个列空间

javascript - 检查元素的文本是否与另一个元素的文本相同

asp.net-mvc-4 - 如何使用 Razor MVC 显示文件夹中的图像?

javascript - ASP.NET MVC 3 Razor : Include JavaScript file in the head tag

javascript - 如何将 JSON 字符串转换为 JavaScript 对象文字

javascript - JWPlayer 7 - 设置后设置 Google Analytics

JQuery Datepicker 不会使用英国日期字符串发布

html - 我应该在同一域 iframe 中使用 head body 和 title 标签吗?