Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/329.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# JSON returntype为导航属性向JSON响应发送NULL(Asp.Net Core 3)_C#_Json_Asp.net Core_Serialization - Fatal编程技术网

C# JSON returntype为导航属性向JSON响应发送NULL(Asp.Net Core 3)

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 }); 这很好,但当我尝试通过相同的过程将外键对象发送到这些属性

我将各种值返回到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,
        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类吗?还有你提到的错误?