Javascript if语句不会执行MVC3 / razor

时间:2011-10-13 20:05:11

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

我有以下代码:

<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。 有什么想法吗?

4 个答案:

答案 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的东西(甚至不知道它是什么),所以这只是猜测