2010-08-24 33 views
12

是否有人知道如何強制Razor View引擎來打印在foreach循環下的精確行。代碼如下:Razor View Engine和jQuery

@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("#[email protected]").progressBar(); 
     } 
    }); 
</script> 

}

我嘗試使用$()和jQuery(),但在這兩種情況下,剃刀不知道該怎麼辦。有什麼辦法迫使他打印確切的:jQuery(「#pb @ PlayerID」)。progressBar();。我想有這樣的事情:

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

});

預先感謝您!

回答

22

在@foreach塊中,默認情況下內容是代碼,除非您切換回標記。所以「jQuery(...)。progressBar()」這一行被認爲是C#。在這種情況下,如果您想要HTML以外的標記,您可以使用<文本標記,該標記實際上並未呈現或指示剃刀將該行的其餘部分視爲標記的「@:」指令,否不管它包含什麼(當然,你可以使用行內的「@」來嵌套更多的代碼塊)。

此外,「pb @ PlayerID」看起來像一個電子郵件地址給剃刀,所以它忽略它。您可以通過使用@()explict表達式語法來避免這種情況。所以@foreach塊應該是這樣的:

@foreach(var player in Model) 
{ 
    @: jQuery("#[email protected](PlayerID)").progressBar(); 
} 
+0

好的!順便說一句,我認爲你的意思是「......你可以使用文本標籤」而不是「你可以使用標籤」。也許它被SO引擎剝去了.. – aolde 2010-08-24 15:32:59

+0

謝謝!這將幫助我很多... – rjovic 2010-08-24 16:16:41

3

very helpful article由斯科特谷解釋了所有你需要知道的 - 並具有幾乎每一種情況所覆蓋。

下面是@Manticore提到的明確的<文本>樣式 - 本文中有更多示例。

alt text

+2

這裏是來自Phil Haack的更加簡潔的Razor cheatsheet:http://haacked.com/archive/2011/01/06/razor-syntax-quick-reference.aspx – 2011-01-10 02:42:19

相關問題