Razor View Engine和jQuery

有没有人知道如何强制Razor View引擎打印foreach循环下的确切行。 代码如下:

@section head{    $(document).ready(function() { @foreach(var player in Model) { jQuery("#pb@PlayerID").progressBar(); } });  

}

我尝试使用$()和jQuery(),但在两种情况下剃刀都不知道该怎么做。 有没有办法强迫他打印这个: jQuery(“#pb @ PlayerID”)。progressBar(); 。 我想要这样的东西:

 $(document).ready(function() { $("#pb1").progressBar(); $("#pb2").progressBar(); $("#pb3").progressBar(); 

});

先感谢您!

在@foreach块内部,默认情况下内容是代码,除非您切换回标记。 所以“jQuery(…)。progressBar()”行被认为是C#。 在这种情况下,你想要的标记不是HTML,你可以使用实际上没有呈现的标签或“@:”指令,它指示Razor将该行的其余部分视为标记,不无论它包含什么(当然,你可以在行内使用“@”来嵌套更多的代码块)。

此外,“pb @ PlayerID”看起来像是Razor的电子邮件地址,所以它忽略了它。 您可以使用@()explict表达式语法来避免这种情况。 所以@foreach块应该如下所示:

 @foreach(var player in Model) { @: jQuery("#pb@(PlayerID)").progressBar(); } 

Scott Gu的这篇非常有用的文章解释了你需要知道的所有内容 – 几乎涵盖了所有情况。

这是@Manticore提到的显式风格 – 文章中有更多的例子。

替代文字