VB Razor 中 <script> 元素中的 Javascript 代码

标签 javascript asp.net-mvc vb.net razor

我试图在 Razor 条件的 View 中包含一些 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

我也用 <text> 试过这个此处描述的伪元素:Using Razor within JavaScript

@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

但仍然没有运气......我怎样才能让 VB 不理会我的 JS?

最佳答案

好吧,我强制自己创建了我的第一个 .vbhtml 文件,然后四处搜索,你已经非常接近 <text> 了。 block 。

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

有两种解决方法,具体取决于您的 @If 中有多少 html :

选项 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

..非常漂亮

选项 2:@<text>

因为 VB 可以有 XML,如 this answer 中所述,一个普通的<text>将被解释为 VB 代码,而不是 Razor 。所以在VB中,相对于C#,需要使用@<text>有一个 HTML block :

@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

这解析得很好。

关于VB Razor 中 &lt;script&gt; 元素中的 Javascript 代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27281919/

相关文章:

javascript - 如何为设备使用正确的 CSS

javascript - 文档已创建但响应为空

c# - Asp.Net View 呈现意外输出

vb.net - 禁用图片框上的图像混合

javascript - 替换 html 标签中以某些文本开头的制表符和换行符

asp.net-mvc - ASP.NET Core 3.1 MVC 返回 AmbigeousMatchException,服务器错误 500

c# - 如何设置 IdentityFactoryOptions<AppIdentityUserManager> 选项?

regex - 匹配字母字符串并要求至少一个大写字母和一个小写字母的正则表达式 (vb.net)

vb.net - 表格只是卡住循环行

javascript - Map 中的值可以有多个键吗?如果不是那么该怎么做?