gpt4 book ai didi

.net - 如何通过 Ajax get 请求从 Controller 获取复杂对象以进行查看?

转载 作者:行者123 更新时间:2023-12-01 00:11:11 26 4
gpt4 key购买 nike

我正在尝试通过 JQuery $.getJSON 将复杂的 ViewModel 对象获取到我的 View 。但是,尽管它适用于简单对象,但当我的 View 模型包含其他对象列表作为其一部分时,我的 Ajax 请求将停止工作。

这就是我获取数据的方式,

$.getJSON('/Company/GetCompanies', function(data) { 
viewModel.model = ko.mapping.fromJS(data)
ko.applyBindings(viewModel)
});

这是工作 View 模型,

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 View 模型的 FillCompanies() 方法中,我的 ajax get 请求停止工作。

顺便说一句,这是我的 Controller ,在两种情况下它都会返回正确的数据,但是当我添加复杂对象时,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')
});

例如,当没有复杂对象时,警报正在工作,但当我将对象添加到 View 模型时,警报就会停止工作。

<小时/>

编辑2

这是我从浏览器而不是 ajax 调用“Company/GetCompanies”时出现的错误。

A circular reference was detected while serializing an object of type 'CompanyManagement.Models.CompanyEmail'.

<小时/>

我需要做一些特殊的事情来将复杂的对象从 Controller 传递到 View 吗?有什么想法吗?

最佳答案

Do i need to do something special to pass complex objects from controller to view ?

是的,您应该使用 View 模型。您无法使用 JSON 序列化对象层次结构,因为对象层次结构之间包含循环引用。如果您希望能够以 JSON 序列化您的模型并通过网络发送它,则必须打破这些循环引用。 JSON 序列化格式根本不支持这一点。

关于.net - 如何通过 Ajax get 请求从 Controller 获取复杂对象以进行查看?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11340442/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com