Razor View Engine和jQuery

rjo*_*vic 12 jquery razor

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

@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>
Run Code Online (Sandbox Code Playgroud)

}

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

$(document).ready(function() {
    $("#pb1").progressBar();
    $("#pb2").progressBar();
    $("#pb3").progressBar();
Run Code Online (Sandbox Code Playgroud)

});

先感谢您!

And*_*rse 22

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

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

@foreach(var player in Model)
{
    @: jQuery("#pb@(PlayerID)").progressBar();
}
Run Code Online (Sandbox Code Playgroud)