中的Javascript代码<;脚本>;VB中的元素

中的Javascript代码<;脚本>;VB中的元素,javascript,asp.net-mvc,vb.net,razor,Javascript,Asp.net Mvc,Vb.net,Razor,我试图在Razor条件中的视图中包含一些JS,但它一直试图将我的JS解释为VB: @If includeMoreJs Then @<script type="text/javascript" src="/some-js-file.js"></script> <script type="text/javascript" src="/some-other-js-file.js"></script> <script type

我试图在Razor条件中的视图中包含一些JS,但它一直试图将我的JS解释为VB:

@If includeMoreJs Then
    @<script type="text/javascript" src="/some-js-file.js"></script>
    <script type="text/javascript" src="/some-other-js-file.js"></script>
    <script type="text/javascript">
        function someFunction(p) {
            if (p) foo();
            else bar();
        }
    </script>
End If
@如果includeMoreJs那么
@
函数someFunction(p){
if(p)foo();
else-bar();
}
如果结束
我还尝试了使用
psuedo元素,如下所述:

@如果includeMoreJs那么
函数someFunction(p){
if(p)foo();
else-bar();
}
如果结束

但还是没有运气。。。我怎样才能让VB不去管我的JS呢?

好吧,我强迫自己创建了我的第一个.vbhtml文件,然后在谷歌上搜索,你几乎就可以看到
块了

是一个很好的VB Razor语法资源

有两种方法可以解决这个问题,具体取决于
@If
中有多少html:

@If includeMoreJs Then
    @:<script type="text/javascript" src="/some-js-file.js"></script>
    @:<script type="text/javascript" src="/some-other-js-file.js"></script>
    @:<script type="text/javascript">
    @:    function someFunction(p) {
    @:        if (p) foo();
    @:        else bar();
    @:
    @:</script>
End If
选项1:
@:

这在每一行上都是必需的,因此通常只有在
if
中只有一行时才使用它:

@If includeMoreJs Then
    @:<script type="text/javascript" src="/some-js-file.js"></script>
    @:<script type="text/javascript" src="/some-other-js-file.js"></script>
    @:<script type="text/javascript">
    @:    function someFunction(p) {
    @:        if (p) foo();
    @:        else bar();
    @:
    @:</script>
End If
@如果includeMoreJs那么
@:
@:
@:
@:函数someFunction(p){
@:if(p)foo();
@:else bar();
@:
@:
如果结束
…非常漂亮

选项2:
@

因为VB可以具有中所述的XML,普通的
将被解释为VB代码,而不是razor。因此,在VB中,与C#相比,您需要使用
@
来拥有一块HTML:

@If includeMoreJs Then
    @<text>
    <script type="text/javascript" src="/some-js-file.js"></script>
    <script type="text/javascript" src="/some-other-js-file.js"></script>
    <script type="text/javascript">
        function someFunction(p) {
            if (p) foo();
            else bar();
        }
    </script>
    </text>
End If
@如果includeMoreJs那么
@
函数someFunction(p){
if(p)foo();
else-bar();
}
如果结束

这解析很好。

奇怪,我在C#中从未遇到过这种情况,而且很惊讶
也不起作用。试着从
@
开始,也许吧?代码看起来不错,你收到了什么错误消息?@Rhumborl是的,我也试过了@。仍然不走运。@TrentStewart我收到了一堆错误:如果你不这样做,你会看到的所有错误我很高兴以VBUgh VB的身份运行JS…@Rhumborl,非常感谢你花时间在这上面。我真的很感激!