我正在使用C#Json.Encode
将一些数据添加到我们的DOM中。
<div data-model='@Json.Encode(cliente)'>
然而,我们的模型中有一些循环引用。
是否可以将全局转换器配置为忽略这些循环引用?
答案 0 :(得分:2)
将[ScriptIgnore]
属性添加到将启动循环引用的属性。例如:
public class Foo
{
public Bar Bar { get; set; }
}
public class Bar
{
[ScriptIgnore]
public Foo Foo { get; set; }
}
因此,假设您有foo
的实例,JSON序列化程序将深入研究Bar
引用,但不会继续进入Foo
引用,因为它&#39 ; s被忽略了。
但是,你只能这样做。如果您从Bar
的实例开始,则根本无法获得Foo
引用,因为它再次被忽略。如果你需要处理这样的各种不同的场景,你需要使用单独的类(称之为视图模型,DTO,等等),你只需设置它,以便循环引用不存在于第一名。这不是一个坏主意,一般。换句话说,您可以首先使用自定义构建的类而不是[ScriptIgnore]
。