首页 > 解决方案 > 使用javascript在对象数组中循环

问题描述

我有一个控制器正在返回objectsin列表TempData

 public ActionResult timelineIndex()
    { 
        var jsondata = new
        {
            data = (
                from t in ptr.GetAll()
                select (new
                {
                    id = t.pptid,
                    Owner = t.Owner,
                    Duration = t.totaldays,
                    Comp = t.Status,
                    StartDate = t.StartDate,
                    EndDate = t.EndDate
                }).ToString())
           };
        TempData["id"] = jsondata.data.ToList();


        return View();
    }

现在在视图中我使用编码@html.Raw(json.Encode)

var modeldata = @Html.Raw(Json.Encode(@TempData["id"])) ;

我想遍历我尝试过的所有对象,但它显示未定义。

    console.log(modeldata);
    var array = [];
    array = modeldata;
  for (var i = 0 ; i<11 ; i++) {  
      var obj = modeldata[i];
      alert(obj.id);
      alert(obj.Startdate)
  }

在对象的模型数据数组中来了。

(11) ["{ id = 1, Owner = erewrwer, Duration = 7, Comp = e…w, StartDate = 2018-09-19, EndDate = 2018-09-26 }", "{ id = 2, Owner = erewrwer, Duration = 7, Comp = , StartDate = 2018-09-19, EndDate = 2018-09-26 }", "{ id = 3, Owner = erewrwer, Duration = 11, Comp = , StartDate = 2018-09-19, EndDate = 2018-09-30 }", "{ id = 4, Owner = erewrwer, Duration = 11, Comp = …z, StartDate = 2018-09-19, EndDate = 2018-09-30 }", "{ id = 5, Owner = erewrwer, Duration = 11, Comp = …z, StartDate = 2018-09-19, EndDate = 2018-09-30 }", "{ id = 6, Owner = erewrwer, Duration = 11, Comp = …z, StartDate = 2018-09-19, EndDate = 2018-09-30 }", "{ id = 7, Owner = erewrwer, Duration = 11, Comp = …S, StartDate = 2018-09-19, EndDate = 2018-09-30 }", "{ id = 8, Owner = erewrwer, Duration = 11, Comp = …S, StartDate = 2018-09-19, EndDate = 2018-09-30 }", "{ id = 9, Owner = erewrwer, Duration = 11, Comp = …E, StartDate = 2018-09-19, EndDate = 2018-09-30 }", "{ id = 10, Owner = erewrwer, Duration = -204, Comp…D, StartDate = 2018-11-30, EndDate = 2018-05-10 }", "{ id = 11, Owner = erewrwer, Duration = 6, Comp = …S, StartDate = 2018-09-24, EndDate = 2018-09-30 }"]

标签: c#jsonencoding

解决方案


Javascript 一切正常,您需要从 c# 代码进行更正,它会正常工作

 public ActionResult timelineIndex()
{ 
    var jsondata = new
    {
        data = (
            from t in ptr.GetAll()
            select (new
            {
                id = t.pptid,
                Owner = t.Owner,
                Duration = t.totaldays,
                Comp = t.Status,
                StartDate = t.StartDate,
                EndDate = t.EndDate
            }))
       };
    TempData["id"] = jsondata.data.ToList();


    return View();
}

推荐阅读