C# JSON returntype为导航属性向JSON响应发送NULL(Asp.Net Core 3)
我将各种值返回到JSON响应,如下所示C# JSON returntype为导航属性向JSON响应发送NULL(Asp.Net Core 3),c#,json,asp.net-core,serialization,C#,Json,Asp.net Core,Serialization,我将各种值返回到JSON响应,如下所示 return Json(new { alldish.BasePrice, alldish.Allergies, alldish.Description, alldish.DishName, alldish.DishSizes }); 这很好,但当我尝试通过相同的过程将外键对象发送到这些属性
return Json(new
{
alldish.BasePrice,
alldish.Allergies,
alldish.Description,
alldish.DishName,
alldish.DishSizes
});
这很好,但当我尝试通过相同的过程将外键对象发送到这些属性之外时,它会给我错误,而不是给出值
return Json(new
{
alldish.BasePrice,
alldish.Allergies,
alldish.Description,
alldish.DishName,
alldish.DishSizes,
alldish.DishExtraTypes
});
实际上,我想将同一个对象作为参数发送到另一个操作,以便可以在编辑页面上打开它
实现相同功能的其他可能方法有哪些?
dishextypes
似乎是一个集合导航属性。您可能需要急切、明确或延迟地加载外键属性的相关数据:
如果选择“快速加载”:
使用(var context=new DishContext())
{
var disks=context.disks
.包括(盘子=>盘子.盘子大小)
.Include(dish=>dish.dish外部类型)
.然后包括(dishExtraType=>dishExtraType.DishExtras)
.然后包括(dishcextra=>dishcextra.SizeToppingPrices)
.ToList();
}
如果选择延迟加载:
//在DbContext中
配置时受保护的覆盖无效(DBContextOptions Builder Options Builder)
=>选项生成器
.UseLazyLoadingProxies()
.UseSqlServer(myConnectionString);
@L.Vallet说得对,我必须引用它,我这样做了,我执行了像
实际上,这里DishSize dishextypes是Dish的导航属性,它们也有自己的导航属性,所以我必须获取所有这些属性,并按照我在JSON中希望的列表形式将它们返回给JSON响应,因此语法如下
return Json(new
{
alldish.BasePrice,
alldish.Allergies,
alldish.Description,
alldish.DishCategoryId,
alldish.DishName,
alldish.DishSizes,
alldish.SubName,
alldish.Rating,
DishSize = alldish.DishSizes.Select(dishsize =>
new
{
BasePrice = dishsize.BasePrice,
Diameter = dishsize.Diameter,
Size = dishsize.Size
}),
DishExtraTypes = alldish.DishExtraTypes.Select(det => new
{
ChooseMultiple = det.ChooseMultiple,
Status = det.Status,
TypeName = det.TypeName,
DishExtras = det.DishExtras.Select(dex =>
new
{
ExtraName = dex.ExtraName,
ExtraPrice = dex.ExtraPrice,
Allergies = dex.Allergies,
IsAvailable = dex.IsAvailable,
ToppingPrices = dex.SizeToppingPrices.Select(stp =>
new
{
SizeName = stp.SizeName,
Price = stp.Price
})
})
}).ToList()
});
有一次我遇到了这个问题,因为我不小心声明了一个属性而不是一个属性(我忘了放“{get;set}”)@heringer这是一个导航属性Y这是一个导航属性,我正在正确地获取所有类型的数据,但是当我试图通过JSON将这些数据传递到ajax响应时,问题就出现了。您可以在问题中添加Dish和DishExtraType类吗?还有你提到的错误?