HtmlControl.cs source code in C# .NET

Source code for the .NET framework in C#

                        

Code:

/ FXUpdate3074 / FXUpdate3074 / 1.1 / untmp / whidbey / QFE / ndp / fx / src / xsp / System / Web / UI / HtmlControls / HtmlControl.cs / 2 / HtmlControl.cs

                            //------------------------------------------------------------------------------ 
// 
//     Copyright (c) Microsoft Corporation.  All rights reserved.
// 
//----------------------------------------------------------------------------- 

/* 
 * HtmlControl.cs 
 *
 * Copyright (c) 2000 Microsoft Corporation 
 */

namespace System.Web.UI.HtmlControls {
    using System; 
    using System.Globalization;
    using System.Collections; 
    using System.ComponentModel; 
    using System.ComponentModel.Design;
    using System.IO; 
    using System.Web.Util;
    using System.Web.UI;
    using AttributeCollection = System.Web.UI.AttributeCollection;
    using System.Security.Permissions; 

/* 
 * An abstract base class representing an intrinsic Html tag that 
 * is not represented by both a begin and end tag, for example
 * INPUT or IMG. 
 */

/// 
///     
///       The 
///       class defines the methods, properties, and events 
///       common to all HTML Server controls in the Web Forms page framework. 
///    
///  
    [
    Designer("System.Web.UI.Design.HtmlIntrinsicControlDesigner, " + AssemblyRef.SystemDesign),
    ToolboxItem(false)
    ] 
    [AspNetHostingPermission(SecurityAction.LinkDemand, Level=AspNetHostingPermissionLevel.Minimal)]
    [AspNetHostingPermission(SecurityAction.InheritanceDemand, Level=AspNetHostingPermissionLevel.Minimal)] 
    abstract public class HtmlControl : Control, IAttributeAccessor { 
        internal string             _tagName;
        private AttributeCollection _attributes; 



        ///  
        /// 
        protected HtmlControl() : this("span") { 
        } 

 
        /// 
        /// 
        protected HtmlControl(string tag) {
            _tagName = tag; 
        }
 
 
        /*
         *  Access to collection of Attributes. 
         */

        /// 
        ///     
        ///       Gets all attribute name/value pairs expressed on a
        ///       server control tag within a selected ASP.NET page. 
        ///     
        /// 
        [ 
        Browsable(false),
        DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden),
        ]
        public AttributeCollection Attributes { 
            get {
                if (_attributes == null) 
                    _attributes = new AttributeCollection(ViewState); 

                return _attributes; 
            }
        }

 
        /*
         *  Access to collection of styles. 
         */ 

        ///  
        ///    
        ///       Gets all
        ///       cascading style sheet (CSS) properties that
        ///       are applied 
        ///       to a specified HTML Server control in an .aspx
        ///       file. 
        ///     
        /// 
        [ 
        Browsable(false),
        DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden),
        ]
        public CssStyleCollection Style { 
            get {
                return Attributes.CssStyle; 
            } 
        }
 
        /*
         * Property to get name of tag.
         */
 
        /// 
        ///     
        ///       Gets the element name of a tag that contains a runat=server 
        ///       attribute/value pair.
        ///     
        /// 
        [
        WebCategory("Appearance"),
        DefaultValue(""), 
        DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)
        ] 
        public virtual  string TagName { 
            get { return _tagName;}
        } 

        /*
         * Disabled property.
         */ 

        ///  
        ///     
        ///       Gets or sets
        ///       a value indicating whether Disabled attribute is included when a server 
        ///       control is rendered.
        ///    
        /// 
        [ 
        WebCategory("Behavior"),
        DefaultValue(false), 
        DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden), 
        TypeConverter(typeof(MinimizableAttributeTypeConverter))
        ] 
        public bool Disabled {
            get {
                string s = Attributes["disabled"];
                return((s != null) ? (s.Equals("disabled")) : false); 
            }
 
            set { 
                if (value)
                    Attributes["disabled"] = "disabled"; 
                else
                    Attributes["disabled"] = null;

            } 
        }
 
 
        /// 
        ///  
        /// 
        protected override bool ViewStateIgnoresCase {
            get {
                return true; 
            }
        } 
 

        ///  
        ///    [To be supplied.]
        /// 
        protected override ControlCollection CreateControlCollection() {
            return new EmptyControlCollection(this); 
        }
 
        /* 
         * Render the control into the given writer.
         */ 

        /// 
        /// 
        ///  
        protected internal override void Render(HtmlTextWriter writer) {
            RenderBeginTag(writer); 
        } 

        /* 
         * Render only the attributes, attr1=value1 attr2=value2 ...
         */

        ///  
        /// 
        ///  
        protected virtual void RenderAttributes(HtmlTextWriter writer) { 
            if (ID != null)
                writer.WriteAttribute("id", ClientID); 

            Attributes.Render(writer);
        }
 
        /*
         * Render the begin tag and its attributes, <TAGNAME attr1=value1 attr2=value2>. 
         */ 

        ///  
        /// 
        /// 
        protected virtual void RenderBeginTag(HtmlTextWriter writer) {
            writer.WriteBeginTag(TagName); 
            RenderAttributes(writer);
            writer.Write(HtmlTextWriter.TagRightChar); 
        } 

        /* 
         * HtmlControls support generic access to Attributes.
         */

        ///  
        /// 
        ///  
        string IAttributeAccessor.GetAttribute(string name) { 
            return GetAttribute(name);
        } 


        /// 
        ///  
        /// 
        protected virtual string GetAttribute(string name) { 
            return Attributes[name]; 
        }
 
        /*
         * HtmlControls support generic access to Attributes.
         */
 
        /// 
        ///  
        ///  
        void IAttributeAccessor.SetAttribute(string name, string value) {
            SetAttribute(name, value); 
        }


        ///  
        /// 
        ///  
        protected virtual void SetAttribute(string name, string value) { 
            Attributes[name] = value;
        } 

        internal void PreProcessRelativeReferenceAttribute(HtmlTextWriter writer,
            string attribName) {
 
            string url = Attributes[attribName];
 
            // Don't do anything if it's not specified 
            if (String.IsNullOrEmpty(url))
                return; 

            try {
                url = ResolveClientUrl(url);
            } 
            catch (Exception e) {
                throw new HttpException(SR.GetString(SR.Property_Had_Malformed_Url, attribName, e.Message)); 
            } 

            writer.WriteAttribute(attribName, url); 
            Attributes.Remove(attribName);
        }

        internal static string MapStringAttributeToString(string s) { 

            // If it's an empty string, change it to null 
            if (s != null && s.Length == 0) 
                return null;
 
            // Otherwise, just return the input
            return s;
        }
 
        internal static string MapIntegerAttributeToString(int n) {
 
            // If it's -1, change it to null 
            if (n == -1)
                return null; 

            // Otherwise, convert the integer to a string
            return n.ToString(NumberFormatInfo.InvariantInfo);
        } 
    }
} 
 

// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
// Copyright (c) Microsoft Corporation. All rights reserved.


                        

Link Menu

Network programming in C#, Network Programming in VB.NET, Network Programming in .NET
This book is available now!
Buy at Amazon US or
Buy at Amazon UK