2010-11-01 1 views
2

Я пытаюсь отправить из сложного объекта из модели данных, Json, к сожалению, я не хочу передавать всю иерархию (person-> HasMany Orders/Заказы HasMany Products и т. Д.), Но только «первый уровень» (например, имена людей для представления сетки).Фильтр 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 накладных расходов.

Любые идеи?

ответ

0

Создайте класс упрощенного лица, который содержит только те свойства, которые вам нужны. Затем преобразуйте IList Person в список упрощенного типа, используя 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 }); 
} 

Вместо этого вы можете использовать анонимный тип, но он не будет строго типизирован в представлении.

+0

Спасибо, что работает! –

Смежные вопросы