如何在JavaScript块上使用Razor注释?

8
当我在cshtml文件中创建一个剃刀评论块到脚本块时,JavaScript intelisense会给我错误提示。 我们该如何解决? 提示:我使用VisualStudio 2012和Resharper 7.1.2。
我知道我们可以使用嵌套注释,像下面这样的代码(剃刀注释和外部的JavaScript注释)。
<script type="text/javascript">
    //@*
    var something = "bla bla";
    //*@
    var other = "something else";
</script>

IT必须正常工作,但存在两个问题: 1- IntelliSense仍然报错 2- 由于Razor忽略空格,在关闭注释符号(*@)之后,我的代码的其余部分被忽略了。

编辑1:

我尝试的其他方法包括:

/*@*
var something = "bla bla";
*@*/
var other = "something else";

并且

/*@*
var something = "bla bla";
*@*/
var other = "something else";

但是它们也存在一些问题。


为什么不直接使用JavaScript的注释语法呢?另外,为什么要使用内联JavaScript? - James South
你能贴一些代码吗?注释不应该影响它。 - Darren
@Murali,你可以给我更多的细节吗? - Omid Shariati
1
@OmidShariati 然后将它们粘贴到脚本块之前。无论哪种方式,您都不应该在 Razor 脚本中嵌套 JavaScript。这是维护的噩梦。将脚本移动到其应该在的单独文件中,您的问题将会消失。 - James South
1
@JamesSouth 绝对正确。 - Joel Cochran
显示剩余5条评论
2个回答

5
我发现我的答案是:
<script type="text/javascript">
/*@*
var something = "bla bla";
*@//*/
var other = "something else";
</script>

它将被渲染为

/*//*/
var other = "something else";

Visual Studio的智能提示和ReSharper正常工作!


5

如果我理解您的问题,您想基于某些条件定义一个 javascript 变量。

如果是这样,您可以尝试以下方法:

<script type="text/javascript">
@if (Model.UserCanSee)
{

    <text>
        var uiEnabled=true;         
    </text>
}
else{

    <text>
        var uiDisabled=true;         
    </text>
}
</script>

这不仅仅涉及JavaScript变量,还包括Razor页面上的内联JavaScript(任何JavaScript代码)。 - Omid Shariati

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接