从复杂对象的ASP.NET MVC JsonResult中过滤Json

时间:2010-11-01 12:31:22

标签: asp.net-mvc json jsonresult

我试图从一个复杂的对象发布数据模型,一个Json,不幸的是,我不想传递所有的层次结构(person-> HasMany Orders / Orders HasMany Products等)但只有“第一个级别“(例如网格视图的人名)。

public JsonResult Search(string fMname, string fSname)
{
IList<Person> people = personRepository.FindAllMatchingName(fMname, fSname);
//Here with lazy loading querying only the “first level” for object
var data = people;
return Json(new { items = data });
//Here querying full object hierarchy and return the big Json
}

我正在寻找一个过滤Json对象的解决方案 - 如果可行的话 - 来处理延迟加载并避免sql开销。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

创建一个仅包含所需属性的简化人员类。然后使用Linq将Person的IList转换为简化类型列表。

public class SimplePerson
    public string FirstName { get; set; }
    public string LastName { get; set; }
}

public JsonResult Search(string fMname, string fSname)
{
    IList<Person> people = personRepository.FindAllMatchingName(fMname, fSname);
    var data = people.Select(m => new SimplePerson() { FirstName = m.FirstName, LastName = m.LastName }).ToList();
    return Json(new { items = data });
}

您可以使用匿名类型,但不会在视图中强类型。