C# 在.NET JSON序列化期间忽略字段;类似于[XmlIgnore]?

C# 在.NET JSON序列化期间忽略字段;类似于[XmlIgnore]?,c#,.net,asp.net-mvc,json,serialization,C#,.net,Asp.net Mvc,Json,Serialization,我有一个POCO类,它在.NET3.5SP1中作为JSON字符串发送到浏览器。我只是使用默认的JSON序列化,我有一些字段要忽略。我想在它们上添加一个类似于[System.Xml.Serialization.XmlIgnore]的属性,这样它们就不会被序列化 [ScriptIgnore] 是您的Huckabery。我在模型上使用的属性如下: public class Item { [ScriptIgnore] public Item ParentItem { get; set

我有一个POCO类,它在.NET3.5SP1中作为JSON字符串发送到浏览器。我只是使用默认的JSON序列化,我有一些字段要忽略。我想在它们上添加一个类似于[System.Xml.Serialization.XmlIgnore]的属性,这样它们就不会被序列化

[ScriptIgnore] 
是您的Huckabery。

我在模型上使用的属性如下:

public class Item
{
    [ScriptIgnore]
    public Item ParentItem { get; set; }
}
在这个特定的场景中,我从Json序列化程序中得到了一个循环引用错误,所以我忽略了它。当我开始了解模型和ViewModel之间的区别时,我是这样想的。

您只需添加
[ScriptIgnore(ApplyToOverrides=true)]
导入文本模板(.tt)文件

这里是我之前文本模板的一部分

#>
<#=codeStringGenerator.NavigationProperty(navigationProperty)#>
<#

我还需要修改
usingdirections
函数,以插入
“usingsystem.Web.Script.Serialization;”

将属性设置为内部属性。不过,这取决于你的结构。考虑一下。

如果不是POCO而是生成的EntityModel,我不想编辑生成的代码,是否有一种解决方法可以将ScriptIgnore属性添加到生成的实体模型中。@Hazimdekenli您可能必须为此使用分部类。别忘了添加对“System.Web.Extensions”的引用为了实现这一点,这帮助我阻止了我的toJson(Model)带回一些不需要的字段,但理想的情况是使用API,您需要创建一个新的区域,使用新的模型和控制器来避免交叉注释。。但是我太懒了。谢谢+1这实际上是“小贩”,但我会给你一个+1的努力和电影。:)原来的答案是正确的,他说的是“哈克贝利”,而不是“哈克贝利”。。。正如在“哈克贝利·费恩”(Huckleberry Finn)中所提到的“每个男人”,他本能地努力“做正确的事情”——一个你永远可以信赖的真正的朋友……因此,“我是你的哈克贝利”,意思是“你可以信赖我”。
ApplyToOverrides
在虚拟财产中似乎非常重要
[ScriptIgnore(ApplyToOverrides = true)]
public virtual ICollection<Currency> Currencies { get; set; }