using System.Collections.Generic; using System.ComponentModel.DataAnnotations; using System.Runtime.Serialization; using Umbraco.Cms.Core.Models.Editors; namespace Umbraco.Cms.Core.Models.ContentEditing { /// /// A model representing a content item to be saved /// [DataContract(Name = "content", Namespace = "")] public class ContentItemSave : IContentSave { public ContentItemSave() { UploadedFiles = new List(); Variants = new List(); } [DataMember(Name = "id", IsRequired = true)] [Required] public int Id { get; set; } [DataMember(Name = "parentId", IsRequired = true)] [Required] public int ParentId { get; set; } [DataMember(Name = "variants", IsRequired = true)] public IEnumerable Variants { get; set; } [DataMember(Name = "contentTypeAlias", IsRequired = true)] [Required(AllowEmptyStrings = false)] public string? ContentTypeAlias { get; set; } /// /// The template alias to save /// [DataMember(Name = "templateAlias")] public string? TemplateAlias { get; set; } #region IContentSave [DataMember(Name = "action", IsRequired = true)] [Required] public ContentSaveAction Action { get; set; } [IgnoreDataMember] public List UploadedFiles { get; } //These need explicit implementation because we are using internal models /// [IgnoreDataMember] IContent? IContentSave.PersistedContent { get; set; } //Non explicit internal getter so we don't need to explicitly cast in our own code [IgnoreDataMember] public IContent? PersistedContent { get => ((IContentSave)this).PersistedContent; set => ((IContentSave)this).PersistedContent = value; } #endregion } }