2012-10-22 28 views
0

我有一個我想要迭代的集合,它保存在一個C#變量中。是否可以在HTML內的C#代碼中使用Javascript變量?

我想在Javascript中使用for循環來遍歷它;這可能嗎?

例如:

@{ int questionCount = 0; 
foreach(var q in Model.Questions){ 
questionCount++; 
} 

...做一些HTML ...

<script type="text/javascript"> 
jQuery(function() { 


for (var i=1;i<[email protected];i++) 
{   

    var d1 = @Model.Questions[i].Answers.Where(m => m.Answer == 1).Count(); 
    <-- this is where it breaks --> 
} 

}); 

我得到的錯誤說,指數超出範圍。我想這意味着一旦我將@符號放入行中,它就不會理解'我'。我怎樣才能正確分隔字符串使用變量我(從Javascript)迭代我的C#集合?

回答

1

這不起作用。您無法訪問服務器端代碼塊中的客戶端變量。

+0

正如我想的,感謝您的確認。因爲我*可以*要求類似var d1 = @ Model.Questions [0] .Answers.Where(m => m.Answer == 1).Count(); (即將索引設置爲零),並且由於我知道該索引的值(來自循環內),是否有一種方法可以動態構造這條單線? – user1711233

+0

您可以創建一些代碼在服務器上運行,以便在字符串中生成JavaScript(即,將在客戶端上運行的代碼),然後在.CSHTML中輸出該字符串。 –

+0

這聽起來很有希望。我對這個東西有點新手,會不會是生成Javascript的C#代碼? – user1711233

0

您的javascript中不能使用服務器端型號,這些型號僅在服務器端與生成HTML相關。

如果您確實需要javascript代碼中的值,那麼您可以將該模型的值放入一些隱藏的html元素中。

+0

謝謝@Asif;你能詳細談談你的第二句話嗎?此外,因爲我可以要求類似var d1 = @ Model.Questions [0] .Answers.Where(m => m.Answer == 1).Count(); (即將索引設置爲零),並且由於我知道該索引的值(來自循環內),是否有一種方法可以動態構造這條單線? – user1711233

相關問題