在 cshtml 中输出一段 json 给客户端,生成数组时,当是第一个元素前,不输出逗号,从第二个元素开始,前面要输出逗号。类似C#中这样写:
StringBuilder sb = new StringBuilder();
sb.Append("[");
string pre = "";
foreach(var item in myList){
    sb.Append(pre);
    pre = ",";    sb.Append("{'name' : '" + item.Name).Append("',");
    sb.Append("'age' : " + item.Age);
    sb.Append("}");
}
sb.Append("]");但是在 cshtml 中似乎不可以修改变量的值,在下面的语句  @{pre = ",";} 中总是报错
@{
    Layout = null;
}
var indexdata = [
    { 
        text : 'Project Manage', 
        isexpand: false, 
        children: [
            {url: "@Url.Content("~/Project/List")", text:"Project Manage"}
        ]
    }, 
    {
        text : 'Project',
        isexpand: true, 
        children: [
            @{string pre = "";}
            @foreach(var project in ViewBag.ProjectList){
                @Html.DisplayText(pre)
                @{pre = ",";}
            }
        ]
    }
];

解决方案 »

  1.   

    在控制器的action中直接 Return json(myList),不需要再写一个cshtml了
      

  2.   

    MVC有输出JSON格式类型,在action里写好,前台直接用就行了
      

  3.   

    用不着,用string.Join()就可以了。string s = string.Join(",", myList.Select(x => x.Name).ToArray());
      

  4.   


    Thank you for your reply.在 action 中组装 json 有点麻烦,并且需要重装编译
    另外,生成json只是一个需求,如果还有别的需求怎么办?
    比如有时会要求生成的表格里,不同行之间交错的颜色显示。当然这有不少其它的办法可以做到,但是我想知道的是在 cshtml 里应该怎么办。
      

  5.   

    还什么需求??这个基本上就Action返回Json了,至于生成什么表格之类,Action同样是返回Json,View页面进行拼装,不同行之间交错颜色显示,这个更是View页面js去控制了,jquery处理会来得相当方便!