//------------------------------------------------------------------------------ // // Copyright (c) Microsoft Corporation. All rights reserved. // //------------------------------------------------------------------------------ namespace System.Web.UI { using System.Runtime.InteropServices; using System; using System.ComponentModel; /// /// LiteralContentAttribute indicates whether the contents within a tag representing /// a custom/web control should be treated by Trident as a "literal/text" content. /// Web controls supporting complex properties (like Templates, etc.) typically /// mark themselves as "literals", thereby letting the designer infra-structure /// and Trident deal with the persistence of those attributes. /// /// If LiteralContentAttribute.No is present or no LiteralContentAttribute marking /// exists, then the tag corresponding to the web control is not treated as a literal /// content tag. /// If LiteralContentAttribute.Yes is present, then the tag corresponding to the web /// control is treated as a literal content tag. /// [AttributeUsage(AttributeTargets.All)] public sealed class PersistenceModeAttribute : Attribute { /// /// This marks a property or event as persistable in the HTML tag as an attribute. /// public static readonly PersistenceModeAttribute Attribute = new PersistenceModeAttribute(PersistenceMode.Attribute); /// /// This marks a property or event as persistable within the HTML tag as a nested tag. /// public static readonly PersistenceModeAttribute InnerProperty = new PersistenceModeAttribute(PersistenceMode.InnerProperty); /// /// This marks a property or event as persistable within the HTML tag as a child. /// public static readonly PersistenceModeAttribute InnerDefaultProperty = new PersistenceModeAttribute(PersistenceMode.InnerDefaultProperty); /// /// This marks a property or event as persistable within the HTML tag as a child. /// public static readonly PersistenceModeAttribute EncodedInnerDefaultProperty = new PersistenceModeAttribute(PersistenceMode.EncodedInnerDefaultProperty); /// /// public static readonly PersistenceModeAttribute Default = Attribute; private PersistenceMode mode = PersistenceMode.Attribute; /// public PersistenceModeAttribute(PersistenceMode mode) { if (mode < PersistenceMode.Attribute || mode > PersistenceMode.EncodedInnerDefaultProperty) { throw new ArgumentOutOfRangeException("mode"); } this.mode = mode; } /// /// public PersistenceMode Mode { get { return mode; } } /// public override int GetHashCode() { return Mode.GetHashCode(); } /// /// /// public override bool Equals(object obj) { if (obj == this) { return true; } if ((obj != null) && (obj is PersistenceModeAttribute)) { return((PersistenceModeAttribute)obj).Mode == mode; } return false; } /// /// /// public override bool IsDefaultAttribute() { return this.Equals(Default); } } }