2012-07-02 91 views
3

生成的錯誤是「條件編譯已關閉」。如何在JavaScript腳本標記中使用剃鬚刀循環?

從MSDN入手的條件編譯流行但失敗。

有幾個問題像這樣的: Conditional Compilation is turned off in Razor?

他們都點到了答案:

/*@cc_on @*/ 

從文章在MSDN這裏看到:

http://msdn.microsoft.com/en-us/library/5y5529x3(v=vs.90).aspx

但是,這種黑客攻擊很失敗,或者我似乎無法實現它。尾部@*導致.cshtml文件中的其餘代碼被註釋掉。此外,@cc_on給出錯誤「cc_on在當前上下文中不存在」。

這裏是一段代碼在一個.cshtml文件來測試:

<script type="text/javascript"> 
@for(int i = 0; i < 5; i++) 
{ 
    document.write(@i); 
} 
</script> 

,這將導致「條件編譯斷開」消息。試圖在此處插入解決方法會導致來自for循環的各種其他消息,例如「cc_on」不存在於上下文中,「預期」或「期望的」或「期望的」)

如何for循環剃刀在JavaScript腳本代碼中使用?

+0

周圍的JS這看起來像http://stackoverflow.com/questions/4599169/using-的副本razor-within-javascript – HatSoft

+0

@HatSoft - 大部分情況下,儘管他們沒有提到這個問題的目標是條件編譯警告。 '@:'和''在這裏工作以從剃刀生成JavaScript,但是來自「條件編譯」的警告仍然存在。 –

回答

5

嘗試<text></text>

<script type="text/javascript"> 
@for(int i = 0; i < 5; i++) 
{ 
    <text>var that = this;</text> 
} 
</script> 
+3

'@:document.write(@i)'更簡潔,IMO。換句話說,使用'@:'而不是''標籤。 – Chris

+0

真的嗎?我不知道'@:'。 –

+0

它只用於單行語句,其中過於冗長。它在功能上等同。 – Chris