Вы можете определить модель представления, в которой у вас не будет циклических ссылок:
public class DepartmentViewModel
{
public string DepartmentName { get; set; }
}
public class CompanyViewModel
{
public IEnumerable<DepartmentViewModel> Departments { get; set; }
}
, а затем вы отобразите между вашей моделью и моделью представления (вы можете использовать AutoMapper для этого) и, наконец, верните модель представления в представление.
Например:
public ActionResult Index()
{
var companies = _repository.GetCompanies();
var companiesVM = Mapper.Map<IEnumerable<Company>, IEnumerable<CompanyViewModel>>(companies);
return Json(companiesVM, JsonRequestBehavior.AllowGet);
}
Теперь у вас больше не будет циклических ссылок, и вы сможете успешно сериализовать модель представленияв JSON, и вы только передадите информацию, необходимую для представления.