混合Razor和Javascript代码

我很困惑如何混合剃刀和JS。 这是我坚持的当前function:

<script type="text/javascript"> var data = []; @foreach (var r in Model.rows) { data.push([ @r.UnixTime * 1000, @r.Value ]); } 

如果我可以用<c#></c#>来声明c#代码,其他所有东西都是JS代码 – 这就是我所追求的:

 <script type="text/javascript"> var data = []; <c#>@foreach (var r in Model.rows) {</c#> data.push([ <c#>@r.UnixTime</c#> * 1000, <c#>@r.Value</c#> ]); <c#>}</c#> 

什么是最好的方法来实现这一目标?

使用<text>

 <script type="text/javascript"> var data = []; @foreach (var r in Model.rows) { <text> data.push([ @r.UnixTime * 1000, @r.Value ]); </text> } </script> 

在一个代码块(例如@foreach )中,您需要使用@:<text>标记来标记标记(在本例中为Javascript)。

在标记上下文中,您需要用代码块( @{ ... }@if ,…)围绕代码

你也可以简单的使用

 <script type="text/javascript"> var data = []; @foreach (var r in Model.rows) { @:data.push([ @r.UnixTime * 1000, @r.Value ]); } </script> 

注意@:

永远不要混合更多的语言。

 <script type="text/javascript"> var data = @Json.Encode(Model); // !!!! export data !!!! for(var prop in data){ console.log( prop + " "+ data[prop]); } 

在JS脚本里面用@ {}包装你的Razor代码,注意只使用@有时候它不起作用:

 function hideSurveyReminder() { @Session["_isSurveyPassed"] = true; } 

这会产生

 function hideSurveyReminder() { False = true; } 

在浏览器=(