Asp.Net MVC3 RC剃刀观点:语法嵌入内

问题描述:

代码时遇到嵌入与MVC3 RC1 Razor视图一个JavaScript块中的C#代码。我应该使用什么语法才能使其工作?我得到警告,例如。 isOk变量的预期常量等等。 (无文本标签,下面的代码不会被识别为的JavaScript)Asp.Net MVC3 RC剃刀观点:语法嵌入内<javascript>块

@{bool isOk = true;} 

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

您需要<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警告而言,良好,剃须刀智能感知仍处于测试阶段,因此是远远不够完善。这只是一个你可以放心忽略的警告。重要的是应用程序的工作原理是什么,并发出有效的HTML。希望这是将在最终产品中解决的问题。从个人经验来看,我信任的唯一警告是C#编译器发出的警告。当我在视图中工作时,我安全地忽略了Visual Studio发出的所有糟糕警告,因为我知道这是错误的。

+0

你说得对,在这种情况下,解析器警告应被忽略。输出结果应该是......谢谢。 – rekna 2010-11-17 14:29:59

+0

不幸的是,这些警告仍然存在于MVC 3(最终版本)中。 – cheeesus 2012-10-01 21:21:40

另一种(更简洁,更易于阅读IMO)是逃回出来的文字如下:

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

在这种情况下是正确的,但在多行块可能看起来更整洁 – 2010-11-18 09:46:39