我试图从一个复杂的对象发布数据模型,一个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开销。
有什么想法吗?
答案 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 });
}
您可以使用匿名类型,但不会在视图中强类型。