代码之家  ›  专栏  ›  技术社区  ›  rjovic

Razor视图引擎和jQuery

  •  12
  • rjovic  · 技术社区  · 14 年前

    @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(),但在这两种情况下,我都不知道该怎么办。有没有办法强迫他把这个打印出来: . 我想要这样的东西:

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

    提前谢谢!

    2 回复  |  直到 14 年前
        1
  •  22
  •   Andrew Stanton-Nurse    14 年前

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

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

    @foreach(var player in Model)
    {
        @: jQuery("#pb@(PlayerID)").progressBar();
    }
    
        2
  •  3
  •   Simon_Weaver    14 年前

    这个 very helpful article 作者:Scott Gu解释了所有你需要知道的-并且几乎涵盖了所有情况。

    alt text