Asp.Net MVC3 RC Razor视图:在<javascript>块</javascript>中嵌入代码的语法

时间:2010-11-17 13:11:46

标签: asp.net-mvc razor

在使用 MVC3 RC1 razor视图的javascript块中嵌入c#代码时遇到问题。我应该使用什么语法来使其工作?我得到警告,例如。 isOk变量之间的预期常量。 (没有文本标记,以下代码不被识别为javascript)

@{bool isOk = true;}

<script type="text/javascript">
    var tmp1 = "";
    @if (isOk)
    { 
        <text>
            var tmp=""; // this should be interpreted as javascript
        </text>       
    }
</script>

2 个答案:

答案 0 :(得分:28)

您需要<text>标记来指示未在服务器上评估内容。例如:

@{
    var isOK = true;
}

<script type="text/javascript">
    var tmp1 = "";
    @if (isOK)
    { 
        <text>
            var tmp = "foo";
        </text>       
    }
</script>

将在结果页面中输出:

<script type="text/javascript">
    var tmp1 = "";
    var tmp = "foo";
</script>

Expected Constant警告而言,Razor Intellisense仍处于测试阶段,因此远非完美。这只是一个警告,你可以放心地忽略。重要的是应用程序的工作原理是什么,并发出有效的HTML。希望这是将在最终产品中修复的内容。根据个人经验,我信任的唯一警告是C#编译器发出的警告。当我在视图中工作时,我安全地忽略了Visual Studio发出的所有糟糕警告,因为我知道它是错误的。

答案 1 :(得分:9)

另一种选择(更简洁,更容易阅读的IMO)是按照以下方式逃回文本:

<script type="text/javascript"> 
    var tmp1 = ""; 
    @if (isOK) 
    {  
        @:var tmp = "foo";
    } 
</script>