Cas*_*ule 3 javascript vb.net asp.net-mvc 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="text/javascript">
function someFunction(p) {
if (p) foo();
else bar();
}
</script>
End If
Run Code Online (Sandbox Code Playgroud)
我还尝试使用<text>psuedo 元素进行此操作,如下所述:Using Razor inside 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
Run Code Online (Sandbox Code Playgroud)
但仍然没有运气......我怎样才能让VB独立于我的JS?
好吧,强迫自己创建我的第一个 .vbhtml 文件,并进行<text>谷歌搜索,您已经非常接近了。
此页面是 VB Razor 语法的一个非常好的资源。
有两种方法可以解决这个问题,具体取决于您的 html 中有多少@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
Run Code Online (Sandbox Code Playgroud)
.. 很漂亮
选项2:@<text>
因为 VB 可以具有 XML,如本答案中所述,所以纯文本<text>将被解释为 VB 代码,而不是 razor。因此,在 VB 中,与 C# 相比,您需要使用@<text>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
Run Code Online (Sandbox Code Playgroud)
这解析得很好。