Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc ScriptIgnore属性不适用于部分类_Asp.net Mvc_Json_Serialization_Scriptignore - Fatal编程技术网

Asp.net mvc ScriptIgnore属性不适用于部分类

Asp.net mvc ScriptIgnore属性不适用于部分类,asp.net-mvc,json,serialization,scriptignore,Asp.net Mvc,Json,Serialization,Scriptignore,在局部视图上使用ScriptIgnore标记阻止属性序列化时遇到问题 var docs=@Html.Raw(Json.Encode(模型)) 有趣的是,当我将属性直接添加到.tt文件中的分部类时,它的工作方式与预期的一样,但是因为在执行代码生成时该文件将被覆盖,所以我尝试使用MetadataType [MetadataType(typeof(DocumentMeta))] //this is added so we can add meta data to our partial class..

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

var docs=@Html.Raw(Json.Encode(模型))

有趣的是,当我将属性直接添加到.tt文件中的分部类时,它的工作方式与预期的一样,但是因为在执行代码生成时该文件将被覆盖,所以我尝试使用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; }
}
[MetadataType(typeof(DocumentMeta))]//添加此项以便我们可以将元数据添加到分部类中。。
公共部分类文档
{
}
[MetadataType(typeof(DocumentCategoryMeta))]//添加此项是为了将元数据添加到分部类中。。
公共部分类DocumentCategory
{
}
公共类DocumentMeta
{
[ScriptIgnore]//我们在这里添加ScriptIgnore,因为我们正在序列化客户机代码中的一些实体
公共虚拟ICollection DocumentCategories{get;set;}
}
公共类DocumentCategoryMeta
{
[ScriptIgnore]//我们在这里添加ScriptIgnore,因为我们正在序列化客户机代码中的一些实体
公共虚拟文档类别父项{get;set;}
}
我仍然得到相同的错误: 序列化“DocumentCategory”类型的对象时检测到循环引用

因为DocumentCategory包含分层数据

任何帮助都将不胜感激


Tribe84

尝试
[ScriptIgnore(ApplyToOverrides=true)]
对于所有虚拟属性,您应该使用
ScriptIgnore
属性,如下所示:
[ScriptIgnore(ApplyToOverrides=true)]
这对我不起作用,即使在用上述内容装饰元数据中的属性时,我仍然会遇到循环引用错误,有人有其他想法吗?