2012-10-22 25 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

相关问题