【发布时间】:2017-10-16 22:49:06
【问题描述】:
我正在尝试从我的控制器将列表列表作为 json 返回,
我的控制器代码:
using Newtonsoft.Json;
[HttpGet]
public JsonResult GetPpi()
{
var customer = EngineContext.Current.Resolve<IWorkContext>().CurrentCustomer;
var psg = _xDetailService.GetXDetailbyCustomerId(customer.Id);
var model2 = new List<List<XDetail>>();
foreach (var pr in psg)
{
var plan = _xDetailService.GetXDetailbyId(pr.Id);
var model = new List<XDetail>();
foreach (var x in plan)
{
model.Add(new XDetail
{
Id = x.Id,
XNo = x.XNo,
XName = x.XName,
XSurname = x.XSurname
});
}
model2.Add(model);
}
return Json(model2, JsonRequestBehavior.AllowGet);
}
还有我的 ajax 调用:
function GetPlans() {
$.ajax({
cache: false,
type: "GET",
url: "/XDetail/GetPpi",
data: {},
dataType: 'json',
});
}
X详细信息:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Nop.Core.Domain.UnExpected
{
public partial class XDetail: BaseEntity
{
public int? XNo { get; set; }
public string XName { get; set; }
public string XSurname { get; set; }
public double? XDec { get; set; }
public int? XMaster_Id { get; set; }
public virtual XMaster XMaster { get; set; }
}
}
当我在 return model2 处设置一个断点时,它包含了我在 List of List 中需要的所有值。但如果我继续,它们会返回 null。
我遗漏了一些东西,但找不到什么...
并且还使用 AspNet Mvc 5
【问题讨论】:
-
分享你的
Json方法? -
为您的 cmets 编辑了问题
-
什么是
BaseEntity?如果它标有[DataContract],那么您还需要使用数据协定属性注释您的派生类。这是因为 AspNet Mvc 5 使用 Json.NET 进行序列化,而 Json.NET 需要这个,如 caliburn.micro serialization issue when implementing PropertyChangedBase 中所述。或者让XDetail成为一个没有父类型的简单 DTO。 -
@dbc 它只是公共抽象部分类,没有用 [DataContract] 标记。
-
其实挺好用的,只是我没看到。
标签: c# json asp.net-mvc