ASP.NET CORE Razor,如何配置Json.Encode忽略循环引用?

时间:2017-05-02 18:13:49

标签: json asp.net-mvc razor

我正在使用C#Json.Encode将一些数据添加到我们的DOM中。

<div data-model='@Json.Encode(cliente)'>

然而,我们的模型中有一些循环引用。

是否可以将全局转换器配置为忽略这些循环引用?

1 个答案:

答案 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]