Атрибут ScriptIgnore не работает в частичном классе
У меня проблема с использованием тега ScriptIgnore в моем частичном представлении, чтобы остановить сериализацию свойства.
var docs = @ Html.Raw (Json.Encode (Model))
Самое смешное, что когда я добавляю атрибут непосредственно к частичному классу в файле.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; }
}
Я все еще получаю ту же ошибку: при сериализации объекта типа DocumentCategory обнаружена циклическая ссылка.
Потому что DocumentCategory содержит иерархические данные.
Любая помощь будет принята с благодарностью!
Tribe84
2 ответа
Для всех виртуальных свойств вы должны использовать ScriptIgnore
атрибут, как это: [ScriptIgnore(ApplyToOverrides = true)]