【问题标题】:Javascript code in <script> element within VB RazorVB Razor 中 <script> 元素中的 Javascript 代码
【发布时间】:2014-12-03 21:23:47
【问题描述】:

我试图在 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

我也尝试过使用&lt;text&gt; psuedo 元素,如下所述: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?

【问题讨论】:

  • 奇怪,我在 C# 中从未有过这样的功能,而且很惊讶 &lt;text&gt; 也不起作用。试试用@: 开头吧?
  • 代码看起来不错,你收到什么错误信息?
  • @Rhumborl 是的,我也试过@:。还是没有运气。
  • @TrentStewart 我遇到了一堆错误:如果您尝试将 JS 作为 VB 运行,您会看到所有错误

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


【解决方案1】:

好吧,我已经强迫自己创建了我的第一个 .vbhtml 文件,然后在谷歌上搜索,你已经接近了 &lt;text&gt; 块。

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:@&lt;text&gt;

因为 VB 可以具有this answer 中所述的 XML,所以普通的 &lt;text&gt; 将被解释为 VB 代码,而不是 razor。所以在VB中,与C#相比,你需要使用@&lt;text&gt;来拥有一块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

这很好解析。

【讨论】:

  • 呃 VB...@Rhumborl,非常感谢您花时间在这上面。我真的很感激!
猜你喜欢
  • 1970-01-01
  • 2011-06-19
  • 2016-01-29
  • 1970-01-01
  • 1970-01-01
  • 2017-07-31
  • 1970-01-01
  • 1970-01-01
  • 2014-06-20
相关资源
最近更新 更多