我试图在一个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
我也尝试使用<text>
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?
答案 0 :(得分:2)
好了,我强迫自己创建我的第一个.vbhtml文件,然后用Google搜索,你几乎就在<text>
块。
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可以具有this answer中所述的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
这解析得很好。