C# JsonIgnore属性不适用于ASP.NET MVC实体的一个属性

C# JsonIgnore属性不适用于ASP.NET MVC实体的一个属性,c#,json,asp.net-mvc,json-serialization,C#,Json,Asp.net Mvc,Json Serialization,我的ASP.NET MVC项目中有一个简单的实体,如下所示: public class Folder : EntityData { public Folder() { IsStub = false; } [StringLength(300)] public string Name { get; set; } [JsonIgnore] public bool IsStub { get; set; } [Forei

我的ASP.NET MVC项目中有一个简单的实体,如下所示:

public class Folder : EntityData
{
    public Folder()
    {
        IsStub = false;
    }

    [StringLength(300)]
    public string Name { get; set; }

    [JsonIgnore]
    public bool IsStub { get; set; }

    [ForeignKey("ParentFolderObj")]
    public string ParentFolder { get; set; }

    [JsonIgnore]
    public Folder ParentFolderObj { get; set; }

    [JsonIgnore]
    public virtual ICollection<DesktopFolder> DesktopFolders { get; set; }
    [JsonIgnore]
    public virtual ICollection<UserFolder> UserFolders { get; set; }
}
在我的序列化响应中,例如,当我检索所有文件夹时,我仍然会看到字段“IsStub”,即使它标记为[JsonIgnore]

我使用Newtonsoft.Json进行(反)序列化,以下配置适用于所有项目,并在启动时设置:

HttpConfiguration config = new HttpConfiguration();
config.Formatters.JsonFormatter.SerializerSettings.ReferenceLoopHandling = ReferenceLoopHandling.Ignore;
config.Formatters.JsonFormatter.SerializerSettings.PreserveReferencesHandling = PreserveReferencesHandling.Objects;
config.Formatters.Remove(config.Formatters.XmlFormatter);
正如您所看到的,还有其他[JsonIgnore]字段没有正确地出现在响应中,如下所示:

{
  "deleted": false,
  "updatedAt": null,
  "createdAt": "2018-06-03T06:13:31.66Z",
  "version": "AAAAAAAACJc=",
  "id": "042d81b8-4599-43ec-b462-8cbaf6ecd672",
  "parentFolder": null,
  "isStub": false,
  "name": "Folder636636104113385950"
}
public override bool ShouldSerializeIsStub()
{
  return false;
}
如何使字段
“IsStub”
从我的响应中消失


我还尝试用
[ScriptIgnore]
标记字段,但运气不佳。

在“EntityData类中实现以下内容:

覆盖“文件夹”类中的函数,如下所示:

{
  "deleted": false,
  "updatedAt": null,
  "createdAt": "2018-06-03T06:13:31.66Z",
  "version": "AAAAAAAACJc=",
  "id": "042d81b8-4599-43ec-b462-8cbaf6ecd672",
  "parentFolder": null,
  "isStub": false,
  "name": "Folder636636104113385950"
}
public override bool ShouldSerializeIsStub()
{
  return false;
}
[JsonIgnore]“标记”(它是标记吗?)是正确的。
剩下的没问题。这对我来说很好。我希望它也能对您起到同样的作用。

如果您没有使用json.net进行序列化或反序列化,您应该添加
ScriptIgnoreAttribute
IsStub属性,该属性也是在
EntityData
类中定义的吗?您是使用json.net方法还是.net
JavaScriptSerializer
?检查
[ScriptIgnore]
属性,而不是使用Newtonsoft.Json进行(反)序列化。IsStub不是EntityDataHi Nico的一部分,不幸的是,EntityData是MS Azure SDK中的一个类,我无法触摸它。