我正在asp.net MVC上工作,但有一个我真的不明白的怪异问题...
在我的cshtml开头,我创建了一个像这样的int:
@
{
int i = 0;
}
然后在我的代码中,我在javascript部分中使用此变量来创建带有可变列数的google图表,并且这样做:
for(var j=0; j<@ViewBag.nbTechs;j++)
{
data.addColumn('number', '@ViewBag.techs[i]');
@if (i != 1000)
{
i = i+1;
}
}
@ViewBag.nbTechs is equal 9
@ViewBag.techs is a list of strings that contains 9 strings
这段代码为我创建了一个具有9列的图表,但仅带有
@ViewBag.techs
变量中第一个字符串的名称...我已经检查了变量
i
是否已正确更新,是的...所以我真的不明白为什么它只采用名字...希望有人能帮助我并提前感谢您
编辑:输出(列表中的第一个字符串)
最佳答案
'@ViewBag.techs[i]'
是剃须刀代码,在将其发送到视图之前在服务器上进行了解析,因此计算结果为'@ViewBag.techs[0]'
(查看源代码以进行确认),因此您只会获得列表中的第一个值。
删除您的@{ int i = 0; }
代码,而是将您的集合转换为javascript数组
var techlist = @Html.Raw(Json.Encode(ViewBag.techs))
for(var j = 0; j < @ViewBag.nbTechs; j++)
{
data.addColumn('number', techlist[j]);
}