我正在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是否已正确更新,是的...所以我真的不明白为什么它只采用名字...

希望有人能帮助我并提前感谢您

编辑:输出(列表中的第一个字符串)

javascript - 对于在javascript和cshtml中无法正常工作-LMLPHP

最佳答案

'@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]);
}

10-07 21:02