65.9K
CodeProject is changing. Read more.
Home

Register a style include from code

emptyStarIconemptyStarIconemptyStarIconemptyStarIconemptyStarIcon

0/5 (0 vote)

May 12, 2010

CPOL
viewsIcon

9594

public static class PageExtensions { private const string styleInclude = "$styleInclude"; /// /// Registers a client style include. /// /// The page. /// The...

public static class PageExtensions
    {
        private const string styleInclude = "$styleInclude";
        /// <summary>
        /// Registers a client style include.
        /// </summary>
        /// <param name="page">The page.</param>
        /// <param name="type">The type.</param>
        /// <param name="key">The key.</param>
        /// <param name="url">The URL.</param>
        /// <remarks>
        /// The link include will be registered in the header. 
        /// The header must be marked as runat="Server"
        /// </remarks>
        public static void RegisterClientStyleInclude(this Page page, Type type, string key, string url)
        {
            var styleLink = new System.Web.UI.HtmlControls.HtmlLink();
            styleLink.Href = url;
            styleLink.Attributes.Add("rel", "stylesheet");
            styleLink.Attributes.Add("type", "text/css");
            page.Header.Controls.Add(styleLink);
            page.Items[styleInclude + type.ToString() + key] = true;
        }
        /// <summary>
        /// Determines whether the client style include is registered.
        /// </summary>
        /// <param name="type">The type.</param>
        /// <param name="page">The page.</param>
        /// <param name="key">The key.</param>
        /// <returns>
        /// 	<c>true</c> if the client style include is registered; otherwise, <c>false</c>.
        /// </returns>
        public static bool IsClientStyleIncludeRegistered(this Page page, Type type, string key)
        {
            return page.Items.Contains(styleInclude + type.ToString() + key);
        }
    }