混合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; }
在浏览器=(