从一个复杂的对象过滤Json从ASP.NET MVC JsonResult
问题描述:
我想从一个复杂的对象从数据模型,一个Json,不幸的是,我不想通过所有的层次结构(人 - > HasMany订单/订购HasMany产品等),但仅限“第一级”(例如网格视图的人员名称)。从一个复杂的对象过滤Json从ASP.NET MVC JsonResult
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开销。
任何想法?
答
创建一个只包含所需属性的简化人员类。然后使用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 });
}
您可以改用匿名类型,但它不会在视图中强类型化。
感谢它的工作! – 2010-11-01 16:00:22