在javascript中迭代对象列表

时间:2013-09-21 11:57:36

标签: jquery asp.net-mvc entity-framework asp.net-mvc-4

从mvc 4中的控制器,我使用实体框架从数据库中的模型中请求一组对象:

    [HttpPost]
    public ActionResult RequestDbObjects()
    {
        List<MyObjectType> objCollection;
        using (DataContext context = new DataContext())
        {
            objCollection= context.MyObjects.Where(o => o.TypeId == 1).OrderBy(k => k.Name).ToList();
        }

        return Json(objCollection);
    }

型号:

[Table("MyObjects")]
public class MyObjectType
{
    [Key]
    [DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
    public int Id { get; set; }

    [Required]
    public string Name { get; set; }

    [Required]
    public string Description { get; set; }

    [Required]
    [ForeignKey("Type")]
    public int TypeId { get; set; }
    public virtual Type Type{ get; set; }
}

[Table("Type")]
public class Type
{
    [Key]
    [DatabaseGeneratedAttribute(DatabaseGeneratedOption.None)]
    public int Id { get; set; }

    [Required]
    public string Name { get; set; }
}

在视图中,使用脚本:

   function recollectData() {         
       $.ajax({
           url: "/Controller/RequestDbObjects/",
           type: 'POST',
           success: function (dataCollection) {
              for(var obj in dataCollection)
              {
                 var value = dataCollection[obj];
              }
           },
           error: function () {
               alert('Cannot retrieve the data');              
           }
       });             
   };

在上面的控制器中,首先我调用控制器中的操作,该操作使用实体框架从数据库请求数据,然后从返回到脚本的对象列表中,我想迭代它们,并且每个他们阅读了一些属性并做了一些事情,但我不知道该怎么做。想听吗?

2 个答案:

答案 0 :(得分:1)

您的成功处理程序返回数据。如果它是JSON对象,您可以像这样阅读:

success: function (data) {
    for(var property in data) {
        var value = data[property];
    } 
}

如果你返回一个数组:

success: function (data) {
    for(var i=0; item=data[i]; i++) {

    } 
}

答案 1 :(得分:1)

您必须返回一个ActionResult,而不是List:

[HttpPost]
public ActionResult RequestDbObjects()
{
    List<MyObjectType> objCollection;
    using (DataContext context = new DataContext())
    {
        objCollection= context.MyObjects.Where(o => o.TypeId == 1).OrderBy(k => k.Name).ToList();
    }

    return Json(objCollection);
}