有没有人知道如何强制Razor View引擎打印正在循环的精确线.代码如下:
@section head{ <script type="text/javascript" src="@Url.Content("~/Content/Scripts/jquery-1.4.1.js")"></script> <script type="text/javascript" src="@Url.Content("~/Content/Scripts/jquery.progressbar.min.js")"></script> <script type="text/javascript"> $(document).ready(function() { @foreach(var player in Model) { jQuery("#pb@PlayerID").progressBar(); } }); </script>
}
我尝试使用$()和jQuery(),但在这两种情况下,剃刀不知道该怎么办.有没有什么办法强迫他打印这个:jQuery(“#pb @ PlayerID”).progressBar(); .我想要这样的东西:
$(document).ready(function() { $("#pb1").progressBar(); $("#pb2").progressBar(); $("#pb3").progressBar();
});
先谢谢你!
解决方法
在@foreach区块内,内容默认为代码,除非您切换回标记.所以“jQuery(…).progressBar()”行被认为是C#.在这种情况下,您希望不是HTML的标记,您可以使用< text>标签,这不是实际呈现的或者“@:”指令,指示Razor将该行的其余部分视为标记,无论它包含什么(当然,您可以在行内使用“@”来嵌套进一步的代码块).
另外,“pb @ PlayerID”看起来像是Razor的电子邮件地址,因此它忽略它.您可以通过使用@()Explicit表达式语法来避免这种情况.所以@foreach块应该是这样的:
@foreach(var player in Model) { @: jQuery("#pb@(PlayerID)").progressBar(); }