我有以下代码:
<script type="text/javascript">
if ('@(Model.DidPass)' == 'True') {
alert('Blah Blah True');
}
else {
alert('Blah blah false');
}
</script>
在Fiddler中我可以看到我的if语句在浏览器中呈现为:
if ('True' == 'True')
由于某种原因,警报('Blah blah blah blah True')将无法执行。如果我单步执行VS中的代码,我可以看到它到if语句然后就是bug。 有什么想法吗?
答案 0 :(得分:7)
您需要从代码转换为html,就像这样。否则,编译器将假定alert
是一个c#方法调用(它不是),并且当您尝试使用它时会遇到编译器错误。
<script type="text/javascript">
@if(Model.DidPass){
@:alert('Blah Blah True');
} else {
@:alert('Blah blah false');
}
</script>
或者,如果您的javascript占用多行,则可以使用psuedo元素<text></text>
。 @:
仅适用于直到换行符之后的文本。
答案 1 :(得分:2)
你有没有尝试过:
if (Boolean('@(Model.DidPass)') == true) {
alert('Blah Blah True');
}
else {
alert('Blah blah false');
}
答案 2 :(得分:1)
呃..那不是我怎么做的,但是,既然你要这样做,为什么不这样做呢?
<script type="text/javascript">
alert('@(Model.DidPass ? "blahblahblah true" : "blahlbahlbah false")');
</script>
编辑:修改代码,将其滚回三元组。
答案 3 :(得分:0)
尝试===而不是吗?
从未使用过这个MVC3 / razor的东西(甚至不知道它是什么),所以这只是猜测