从ASP.NET MVC JsonResult从一个复杂的对象过滤器的Json
-
28-09-2019 - |
题
我想从数据模型,一个JSON一个复杂的对象后,不幸的是,我并不想通过所有的层级(人 - >的hasMany订单/订单的hasMany产品等),但只有“第一级”(例如用于在网格视图人的名称)。
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开销
任何想法?
解决方案
生成一个简化的Person类仅包含您需要的属性。然后变换的人与IList到使用LINQ简化类型的列表。
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 });
}
你可以使用匿名类型来代替,但它不会在视图中强类型。
不隶属于 StackOverflow