12

有人知道如何强制 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>

}

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

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

});

先感谢您!

4

2 回答 2

22

在 @foreach 块内,默认情况下内容是代码,除非您切换回标记。所以“jQuery(...).progressBar()”这一行被认为是 C#。在这种情况下,如果您需要不是 HTML 的标记,您可以使用 <text> 标记,该标记实际上并未呈现或指示 Razor 将行的其余部分视为标记的“@:”指令,否不管它包含什么(当然,您可以在该行中使用“@”来嵌套更多代码块)。

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

@foreach(var player in Model)
{
    @: jQuery("#pb@(PlayerID)").progressBar();
}
于 2010-08-24T14:57:29.927 回答
3

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

这是@Manticore 提到的显式 <text> 样式 - 文章中有更多示例。

替代文字

于 2010-12-31T11:42:55.430 回答