我试图通过
JQuery $.getJSON将复杂的viewmodel对象提取到我的视图中.但是,虽然它适用于简单对象,但当我的viewmodel包含其他对象列表作为其一部分时,我的Ajax请求将停止工作.
这是我获取数据的方式,
$.getJSON('/Company/GetCompanies',function(data) { viewmodel.model = ko.mapping.fromJS(data) ko.applyBindings(viewmodel) });
这是工作视图模型,
public class CompanyIndex { public IList<CompanyWithDetail> Companies { get; set; } public void FillCompanies() { UnitOfWork unitOfWork = new UnitOfWork(); unitOfWork.CompanyRepository.SetProxy(false); var CompanyFromDB = unitOfWork.CompanyRepository.GetCompanyWithDetails(); Companies = new List<CompanyWithDetail>(); foreach (Company company in CompanyFromDB) { CompanyWithDetail newCompany = new CompanyWithDetail(); newCompany.CompanyName = company.CompanyName; Companies.Add(newCompany); } unitOfWork.dispose(); } }
这是CompanWithDetail类,
// For sake of demonstration it only contains name public class CompanyWithDetail { public string CompanyName { get; set; } }
这工作正常.但是,当我添加
public IList<CompanyFaxnumber> Faxnumber { get; set; }
这个属性到CompanyWithDetail类,并在CompanyIndex viewmodel的FillCompanies()方法中填充,我的ajax get请求停止工作.
这是我的控制器btw,在这两种情况下它都返回正确的数据,但是当我添加复杂对象时,jquery $.getJSON没有收到.
public ActionResult GetCompanies() { var model = new CompanyIndex(); model.FillCompanies(); return Json(model,JsonRequestBehavior.AllowGet); }
编辑1:
通过说getJSON没有收到数据,我的意思是没有执行函数体.
$.getJSON('/Company/GetCompanies',function(data) { alert('test') });
例如,当没有复杂对象时警报正在工作,但是当我向viewmodel添加对象时它停止工作.
编辑2
当我从浏览器而不是ajax调用’Company / GetCompanies’时,这是错误.
A circular reference was detected while serializing an object of type ‘CompanyManagement.Models.CompanyEmail’.
我是否需要做一些特殊的事情来将复杂的对象从控制器传递到视图?有任何想法吗?
解决方法
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。