PageAdapter.cs source code in C# .NET

Source code for the .NET framework in C#

                        

Code:

/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / xsp / System / Web / UI / PageAdapter.cs / 1305376 / PageAdapter.cs

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

namespace System.Web.UI.Adapters { 
    using System; 
    using System.Collections;
    using System.Collections.Specialized; 
    using System.Globalization;
    using System.IO;
    using System.Security.Permissions;
    using System.Web.UI.WebControls; 
    using System.Web.Util;
 
    public abstract class PageAdapter : ControlAdapter { 
        private IDictionary                 _radioButtonGroups = null;
 

        public virtual StringCollection CacheVaryByHeaders {
            get {
                return null; 
            }
        } 
 

        public virtual StringCollection CacheVaryByParams { 
            get {
                return null;
            }
        } 

 
        ///  
        /// Exposes the page ClientState string to the adapters
        ///  
        protected string ClientState {
            get {
                if (Page != null) {
                    return Page.ClientState; 
                }
                return null; 
            } 
        }
 

        /// 
        /// The id separator used for control UniqueID/ClientID.
        ///  
        internal virtual char IdSeparator {
            get { 
                return Control.ID_SEPARATOR; 
            }
        } 

        internal String QueryString {
            get {
                string queryString = Page.ClientQueryString; 
                if (Page.Request.Browser.RequiresUniqueFilePathSuffix) {
                    if (!String.IsNullOrEmpty(queryString)) { 
                        queryString = String.Concat(queryString, "&"); 
                    }
                    queryString = String.Concat(queryString, Page.UniqueFilePathSuffix); 
                }

                return queryString;
            } 
        }
 
 
        /// 
        /// [To be supplied.] 
        /// 
        public virtual NameValueCollection DeterminePostBackMode() {
            Debug.Assert(Control != null);
            if(Control != null) { 
                return Control.Page.DeterminePostBackMode();
            } 
            return null; 
        }
 

        /// 
        /// [To be supplied.]
        ///  
        public virtual ICollection GetRadioButtonsByGroup(string groupName)  {
            if (_radioButtonGroups == null) { 
                return null; 
            }
 
            return (ICollection)_radioButtonGroups[groupName];
        }

 
        protected internal virtual string GetPostBackFormReference(string formId) {
            return "document.forms['" + formId + "']"; 
        } 

 
        public virtual PageStatePersister GetStatePersister() {
            return new HiddenFieldPageStatePersister(Page);
        }
 

        ///  
        /// [To be supplied.] 
        /// 
        public virtual void RegisterRadioButton(RadioButton radioButton)  { 

            string groupName = radioButton.GroupName;
            if (String.IsNullOrEmpty(groupName))
                return; 

            ArrayList group = null; 
 
            if (_radioButtonGroups == null) {
                _radioButtonGroups = new ListDictionary(); 
            }

            if (_radioButtonGroups.Contains(groupName))  {
                group = (ArrayList)_radioButtonGroups[groupName]; 
            }
            else  { 
                group = new ArrayList(); 
                _radioButtonGroups[groupName] = group;
            } 

            group.Add(radioButton);
        }
 

        ///  
        /// [To be supplied.] 
        /// 
        public virtual void RenderBeginHyperlink(HtmlTextWriter writer, string targetUrl, bool encodeUrl, string softkeyLabel) { 
            RenderBeginHyperlink(writer, targetUrl, encodeUrl, softkeyLabel, null /* accessKey */);
        }

 
        /// 
        /// [To be supplied.] 
        ///  
        public virtual void RenderBeginHyperlink(HtmlTextWriter writer, string targetUrl, bool encodeUrl, string softkeyLabel, string accessKey) {
            String url; 

            // Valid values are null, String.Empty, and single character strings
            if ((accessKey != null) && (accessKey.Length > 1)) {
                throw new ArgumentOutOfRangeException("accessKey"); 
            }
 
            if (encodeUrl) { 
                url = HttpUtility.HtmlAttributeEncode(targetUrl);
            } 
            else {
                url = targetUrl;
            }
            writer.AddAttribute("href", url); 
            if (!String.IsNullOrEmpty(accessKey)) {
                writer.AddAttribute("accessKey", accessKey); 
            } 
            writer.RenderBeginTag("a");
        } 


        /// 
        /// [To be supplied.] 
        /// 
        public virtual void RenderEndHyperlink(HtmlTextWriter writer) { 
            writer.WriteEndTag("a"); 
        }
 

        public virtual void RenderPostBackEvent(HtmlTextWriter writer, string target, string argument, string softkeyLabel, string text) {
            RenderPostBackEvent(writer, target, argument, softkeyLabel, text, null /*postUrl */, null /* accesskey */);
        } 

 
        ///  
        ///    Renders a client widget corresponding to a postback event, for example a wml do or a post link.   Note that this
        ///     widget may not submit the form data, e.g. scriptless html where this renders a link.  
        /// 
        public virtual void RenderPostBackEvent(HtmlTextWriter writer, string target, string argument, string softkeyLabel, string text, string postUrl, string accessKey) {
            RenderPostBackEvent(writer, target, argument, softkeyLabel, text, postUrl, accessKey, false /* encode */);
        } 

 
        ///  
        ///    Renders a client widget corresponding to a postback event, for example a wml do or a post link.   Note that this
        ///     widget may not submit the form data, e.g. scriptless html where this renders a link.  
        /// 
        protected void RenderPostBackEvent(HtmlTextWriter writer, string target, string argument, string softkeyLabel, string text, string postUrl, string accessKey, bool encode) {
            // Default: render postback event as scriptless anchor (works for all markups).  Override for specific markups.
            string amp = encode ? "&" : "&"; 

            bool isCrossPagePostBack = !String.IsNullOrEmpty(postUrl); 
            writer.WriteBeginTag("a"); 
            writer.Write(" href=\"");
            string url = null; 
            if (!isCrossPagePostBack) {
                if ((String)Browser["requiresAbsolutePostbackUrl"] == "true") {
                    url = Page.Response.ApplyAppPathModifier(Page.Request.CurrentExecutionFilePath);
                } 
                else {
                    url = Page.RelativeFilePath; 
                } 
            }
            else { 
                url = postUrl;
                Page.ContainsCrossPagePost = true;
            }
 
            writer.WriteEncodedUrl(url);
            writer.Write("?"); 
 
            string clientState = ClientState;
            if (clientState != null) 
            {
                ICollection chunks = Page.DecomposeViewStateIntoChunks();
                // Default chunk count is 1
                if (chunks.Count > 1) { 
                    writer.Write(Page.ViewStateFieldCountID + "=" + chunks.Count + amp);
                } 
                int count = 0; 
                foreach (String state in chunks) {
                    writer.Write(Page.ViewStateFieldPrefixID); 
                    if (count > 0) writer.Write(count.ToString(CultureInfo.CurrentCulture));
                    writer.Write("=" + HttpUtility.UrlEncode(state));
                    writer.Write(amp);
                    ++count; 
                }
 
            } 

            if (isCrossPagePostBack) { 
                writer.Write(Page.previousPageID);
                writer.Write("=" + Page.EncryptString(Page.Request.CurrentExecutionFilePath));
                writer.Write(amp);
            } 

            writer.Write("__EVENTTARGET=" + HttpUtility.UrlEncode(target)); 
            writer.Write(amp); 
            writer.Write("__EVENTARGUMENT=" + HttpUtility.UrlEncode(argument));
            // 

            string queryStringText = QueryString;
            if (!String.IsNullOrEmpty(queryStringText)) {
                writer.Write(amp); 
                writer.Write(queryStringText);
            } 
 
            writer.Write("\"");
            if (!String.IsNullOrEmpty(accessKey)) { 
                writer.WriteAttribute("accessKey", accessKey);
            }
            writer.Write(">");
            writer.Write(text); 
            writer.WriteEndTag("a");
        } 
 

        ///  
        ///     Transforms text for the target device.  The default transformation is the identity transformation,
        ///     which does not change the text.
        /// 
        public virtual string TransformText(string text) { 
            return text;
        } 
    } 
}

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

namespace System.Web.UI.Adapters { 
    using System; 
    using System.Collections;
    using System.Collections.Specialized; 
    using System.Globalization;
    using System.IO;
    using System.Security.Permissions;
    using System.Web.UI.WebControls; 
    using System.Web.Util;
 
    public abstract class PageAdapter : ControlAdapter { 
        private IDictionary                 _radioButtonGroups = null;
 

        public virtual StringCollection CacheVaryByHeaders {
            get {
                return null; 
            }
        } 
 

        public virtual StringCollection CacheVaryByParams { 
            get {
                return null;
            }
        } 

 
        ///  
        /// Exposes the page ClientState string to the adapters
        ///  
        protected string ClientState {
            get {
                if (Page != null) {
                    return Page.ClientState; 
                }
                return null; 
            } 
        }
 

        /// 
        /// The id separator used for control UniqueID/ClientID.
        ///  
        internal virtual char IdSeparator {
            get { 
                return Control.ID_SEPARATOR; 
            }
        } 

        internal String QueryString {
            get {
                string queryString = Page.ClientQueryString; 
                if (Page.Request.Browser.RequiresUniqueFilePathSuffix) {
                    if (!String.IsNullOrEmpty(queryString)) { 
                        queryString = String.Concat(queryString, "&"); 
                    }
                    queryString = String.Concat(queryString, Page.UniqueFilePathSuffix); 
                }

                return queryString;
            } 
        }
 
 
        /// 
        /// [To be supplied.] 
        /// 
        public virtual NameValueCollection DeterminePostBackMode() {
            Debug.Assert(Control != null);
            if(Control != null) { 
                return Control.Page.DeterminePostBackMode();
            } 
            return null; 
        }
 

        /// 
        /// [To be supplied.]
        ///  
        public virtual ICollection GetRadioButtonsByGroup(string groupName)  {
            if (_radioButtonGroups == null) { 
                return null; 
            }
 
            return (ICollection)_radioButtonGroups[groupName];
        }

 
        protected internal virtual string GetPostBackFormReference(string formId) {
            return "document.forms['" + formId + "']"; 
        } 

 
        public virtual PageStatePersister GetStatePersister() {
            return new HiddenFieldPageStatePersister(Page);
        }
 

        ///  
        /// [To be supplied.] 
        /// 
        public virtual void RegisterRadioButton(RadioButton radioButton)  { 

            string groupName = radioButton.GroupName;
            if (String.IsNullOrEmpty(groupName))
                return; 

            ArrayList group = null; 
 
            if (_radioButtonGroups == null) {
                _radioButtonGroups = new ListDictionary(); 
            }

            if (_radioButtonGroups.Contains(groupName))  {
                group = (ArrayList)_radioButtonGroups[groupName]; 
            }
            else  { 
                group = new ArrayList(); 
                _radioButtonGroups[groupName] = group;
            } 

            group.Add(radioButton);
        }
 

        ///  
        /// [To be supplied.] 
        /// 
        public virtual void RenderBeginHyperlink(HtmlTextWriter writer, string targetUrl, bool encodeUrl, string softkeyLabel) { 
            RenderBeginHyperlink(writer, targetUrl, encodeUrl, softkeyLabel, null /* accessKey */);
        }

 
        /// 
        /// [To be supplied.] 
        ///  
        public virtual void RenderBeginHyperlink(HtmlTextWriter writer, string targetUrl, bool encodeUrl, string softkeyLabel, string accessKey) {
            String url; 

            // Valid values are null, String.Empty, and single character strings
            if ((accessKey != null) && (accessKey.Length > 1)) {
                throw new ArgumentOutOfRangeException("accessKey"); 
            }
 
            if (encodeUrl) { 
                url = HttpUtility.HtmlAttributeEncode(targetUrl);
            } 
            else {
                url = targetUrl;
            }
            writer.AddAttribute("href", url); 
            if (!String.IsNullOrEmpty(accessKey)) {
                writer.AddAttribute("accessKey", accessKey); 
            } 
            writer.RenderBeginTag("a");
        } 


        /// 
        /// [To be supplied.] 
        /// 
        public virtual void RenderEndHyperlink(HtmlTextWriter writer) { 
            writer.WriteEndTag("a"); 
        }
 

        public virtual void RenderPostBackEvent(HtmlTextWriter writer, string target, string argument, string softkeyLabel, string text) {
            RenderPostBackEvent(writer, target, argument, softkeyLabel, text, null /*postUrl */, null /* accesskey */);
        } 

 
        ///  
        ///    Renders a client widget corresponding to a postback event, for example a wml do or a post link.   Note that this
        ///     widget may not submit the form data, e.g. scriptless html where this renders a link.  
        /// 
        public virtual void RenderPostBackEvent(HtmlTextWriter writer, string target, string argument, string softkeyLabel, string text, string postUrl, string accessKey) {
            RenderPostBackEvent(writer, target, argument, softkeyLabel, text, postUrl, accessKey, false /* encode */);
        } 

 
        ///  
        ///    Renders a client widget corresponding to a postback event, for example a wml do or a post link.   Note that this
        ///     widget may not submit the form data, e.g. scriptless html where this renders a link.  
        /// 
        protected void RenderPostBackEvent(HtmlTextWriter writer, string target, string argument, string softkeyLabel, string text, string postUrl, string accessKey, bool encode) {
            // Default: render postback event as scriptless anchor (works for all markups).  Override for specific markups.
            string amp = encode ? "&" : "&"; 

            bool isCrossPagePostBack = !String.IsNullOrEmpty(postUrl); 
            writer.WriteBeginTag("a"); 
            writer.Write(" href=\"");
            string url = null; 
            if (!isCrossPagePostBack) {
                if ((String)Browser["requiresAbsolutePostbackUrl"] == "true") {
                    url = Page.Response.ApplyAppPathModifier(Page.Request.CurrentExecutionFilePath);
                } 
                else {
                    url = Page.RelativeFilePath; 
                } 
            }
            else { 
                url = postUrl;
                Page.ContainsCrossPagePost = true;
            }
 
            writer.WriteEncodedUrl(url);
            writer.Write("?"); 
 
            string clientState = ClientState;
            if (clientState != null) 
            {
                ICollection chunks = Page.DecomposeViewStateIntoChunks();
                // Default chunk count is 1
                if (chunks.Count > 1) { 
                    writer.Write(Page.ViewStateFieldCountID + "=" + chunks.Count + amp);
                } 
                int count = 0; 
                foreach (String state in chunks) {
                    writer.Write(Page.ViewStateFieldPrefixID); 
                    if (count > 0) writer.Write(count.ToString(CultureInfo.CurrentCulture));
                    writer.Write("=" + HttpUtility.UrlEncode(state));
                    writer.Write(amp);
                    ++count; 
                }
 
            } 

            if (isCrossPagePostBack) { 
                writer.Write(Page.previousPageID);
                writer.Write("=" + Page.EncryptString(Page.Request.CurrentExecutionFilePath));
                writer.Write(amp);
            } 

            writer.Write("__EVENTTARGET=" + HttpUtility.UrlEncode(target)); 
            writer.Write(amp); 
            writer.Write("__EVENTARGUMENT=" + HttpUtility.UrlEncode(argument));
            // 

            string queryStringText = QueryString;
            if (!String.IsNullOrEmpty(queryStringText)) {
                writer.Write(amp); 
                writer.Write(queryStringText);
            } 
 
            writer.Write("\"");
            if (!String.IsNullOrEmpty(accessKey)) { 
                writer.WriteAttribute("accessKey", accessKey);
            }
            writer.Write(">");
            writer.Write(text); 
            writer.WriteEndTag("a");
        } 
 

        ///  
        ///     Transforms text for the target device.  The default transformation is the identity transformation,
        ///     which does not change the text.
        /// 
        public virtual string TransformText(string text) { 
            return text;
        } 
    } 
}

// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
                        

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