ScriptIgnore属性不适用于分部类

时间:2014-03-25 17:00:10

标签: asp.net-mvc json serialization scriptignore

我在部分视图上使用ScriptIgnore标记来阻止属性序列化时遇到问题。

var docs = @ Html.Raw(Json.Encode(Model))

有趣的是,当我将属性直接添加到.tt文件中的partial类时,它按预期工作,但因为当我执行代码时该文件将被覆盖,我尝试使用MetadataType

[MetadataType(typeof(DocumentMeta))] //this is added so we can add meta data to our partial class..
public partial class Document
{

}


[MetadataType(typeof(DocumentCategoryMeta))] //this is added so we can add meta data to our partial class..
public partial class DocumentCategory
{

}


public class DocumentMeta
{
    [ScriptIgnore]   //We add the scriptignore here because we are serializing some of these entities in client code
    public virtual ICollection<DocumentCategory> DocumentCategories { get; set; }
}

public class DocumentCategoryMeta
{
    [ScriptIgnore]        //We add the scriptignore here because we are serializing some of these entities in client code
    public virtual DocumentCategory Parent { get; set; }
}

我仍然得到同样的错误: 序列化“DocumentCategory”类型的对象时检测到循环引用。

因为DocumentCategory包含分层数据。

非常感谢任何帮助!

Tribe84

2 个答案:

答案 0 :(得分:1)

尝试[ScriptIgnore(ApplyToOverrides = true)]

答案 1 :(得分:0)

对于所有虚拟属性,您应使用ScriptIgnore属性,如下所示:[ScriptIgnore(ApplyToOverrides = true)]