对于javascript和cshtml中的,无法正常工作

对于javascript和cshtml中的,无法正常工作,javascript,asp.net,asp.net-mvc,razor,Javascript,Asp.net,Asp.net Mvc,Razor,我在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)

我在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.techs是包含9个字符串的字符串列表

这段代码创建了一个包含9列的图表,但只包含
@ViewBag.techs
变量中第一个字符串的名称

我已检查变量
I
是否更新良好,是的。。。所以我真的不明白为什么它只取名字

希望有人能帮助我,提前谢谢你

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


'@ViewBag.techs[i]
是在发送到视图之前在服务器上解析的razor代码,因此计算结果为
'@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]);
}  
var-techlist=@Html.Raw(Json.Encode(ViewBag.techs))
对于(var j=0;j<@ViewBag.nbTechs;j++)
{
data.addColumn('编号',技术列表[j]);
}  

'@ViewBag.techs[i]
是在发送到视图之前在服务器上解析的razor代码,因此计算结果为
'@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]);
}  
var-techlist=@Html.Raw(Json.Encode(ViewBag.techs))
对于(var j=0;j<@ViewBag.nbTechs;j++)
{
data.addColumn('编号',技术列表[j]);
}  

“@ViewBag.techs[j]”是否为您提供了正确的输出?“@ViewBag.techs[i]”我认为您需要从单引号中删除它,因为它不是字符串,也应该有ViewBag.techs[j]您不能在
addColumn()
中的
循环中使用j吗<代码>数据.addColumn('number','@ViewBag.techs[j]')@StephenMuecke如果我放j,它就不起作用了。。。它不是在for循环中查找j,而是在@()中查找一个局部变量:s@Ripun它只与引号一起工作:s如果我删除它们,我的页面上不会显示任何内容
'@ViewBag.techs[j]'
是否为您提供了正确的输出?'@ViewBag.techs[I]'我认为您需要从单个引号中删除它,因为它不是字符串,还应该有ViewBag.techs[j]难道你不能在
addColumn()
中的
for
循环中使用j吗<代码>数据.addColumn('number','@ViewBag.techs[j]')@StephenMuecke如果我放j,它就不起作用了。。。它不是在for循环中查找j,而是在@()中查找一个局部变量:s@Ripun它只对引号起作用:s如果我删除它们,我的页面上不会显示任何内容。您需要删除“@Html.Raw(Json.Encode(ViewBag.techs))”中的引号,它不起作用,但如果没有它,它就完美了;)谢谢您您需要删除“@Html.Raw(Json.Encode(ViewBag.techs))”中的引号,它不起作用,但没有它,它就完美了;)非常感谢。