Ejemplo n.º 1
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="ctr"></param>
        /// <returns></returns>
        public static ControlRenderMode GetControlRenderMode(Control ctr)
        {
            PageRenderMode    pageRenderMode = Request.GetRequestPageRenderMode();
            ControlRenderMode renderMode     = new ControlRenderMode(pageRenderMode);

            PageRenderModePageCache currentPageCache = PageRenderModeHelper.GetPageRenderModeCache(ctr.Page);
            PageRenderModePageCache requestPageCache = renderMode.PageCache;

            int    currentPageLevel    = GetPageLevel(currentPageCache);
            string currentPageUniqueID = GetPageUniqueID(currentPageCache);
            int    requestPageLevel    = GetPageLevel(requestPageCache);
            string requestPageUniqueID = GetPageUniqueID(requestPageCache);

            if (requestPageLevel == currentPageLevel)
            {
                if (ctr.UniqueID == pageRenderMode.RenderControlUniqueID)
                {
                    renderMode.OnlyRenderSelf = true;
                }
            }
            else if (requestPageLevel > currentPageLevel)
            {
                string id = requestPageUniqueID.Split(',')[currentPageLevel];

                if (ctr.UniqueID == id)
                {
                    renderMode.OnlyRenderSelf = true;
                }
            }

            return(renderMode);
        }
Ejemplo n.º 2
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="ctr"></param>
        /// <param name="renderMode"></param>
        public static void CheckOnlyRenderSelf(Control ctr, ControlRenderMode renderMode)
        {
            if (renderMode.OnlyRenderSelf && renderMode.UseNewPage && ctr.Page.Items[PageExtension.PageRenderControlItemKey] != ctr)
            {
                Page currentPage = ctr.Page;
                ctr.Parent.Controls.GetType().GetMethod("SetCollectionReadOnly", BindingFlags.NonPublic | BindingFlags.Instance).Invoke(ctr.Parent.Controls, new object[1] {
                    null
                });

                Page page = new Page();

                PageRenderModePageCache currentPageCache = PageRenderModeHelper.GetPageRenderModeCache(currentPage);
                PageRenderModePageCache pageCache        = PageRenderModeHelper.GetPageRenderModeCache(page);

                SetPageLevel(pageCache, GetPageLevel(currentPageCache) + 1);
                string currentPageUniqueID = GetPageUniqueID(currentPageCache);

                if (currentPageUniqueID != string.Empty)
                {
                    currentPageUniqueID += ",";
                }

                SetPageUniqueID(pageCache, string.Format("{0}{1}", GetPageUniqueID(currentPageCache), ctr.UniqueID));

                page.AppRelativeVirtualPath = ctr.Page.AppRelativeVirtualPath;
                page.EnableEventValidation  = false;

                InitNewPageContent(page, ctr);

                page.AttachPageModules();

                page.ProcessRequest(HttpContext.Current);

                HttpContext.Current.Response.End();
            }
        }
Ejemplo n.º 3
0
		/// <summary>
		/// 
		/// </summary>
		/// <param name="cache"></param>
		/// <returns></returns>
		public static int GetPageLevel(PageRenderModePageCache cache)
		{
			int level = cache.GetValue<int>(_S_PageLevelKey, 0);
			return level;
		}
Ejemplo n.º 4
0
		/// <summary>
		/// 
		/// </summary>
		/// <param name="cache"></param>
		/// <param name="id"></param>
		public static void SetPageUniqueID(PageRenderModePageCache cache, string id)
		{
			cache[_S_PageUniqueIDKey] = id;
		}
Ejemplo n.º 5
0
		/// <summary>
		/// 
		/// </summary>
		/// <param name="cache"></param>
		/// <returns></returns>
		public static string GetPageUniqueID(PageRenderModePageCache cache)
		{
			string id = cache.GetValue<string>(_S_PageUniqueIDKey, string.Empty);

			return id == null ? string.Empty : (string)id;
		}
Ejemplo n.º 6
0
		/// <summary>
		/// 
		/// </summary>
		/// <param name="cache"></param>
		/// <param name="level"></param>
		public static void SetPageLevel(PageRenderModePageCache cache, int level)
		{
			cache[_S_PageLevelKey] = level;
		}
Ejemplo n.º 7
0
		/// <summary>
		/// 通过页面输出状态,加载控件的输出状态
		/// </summary>
		/// <param name="pageRenderMode">页面输出模式</param>
		/// <remarks>通过页面输出状态,加载控件的输出状态</remarks>
		public void LoadFromPageRenderMode(PageRenderMode pageRenderMode)
        {
            //if (!string.IsNullOrEmpty(controlUniqueID) && controlUniqueID == pageRenderMode.RenderControlUniqueID)
            //{
            //    this._OnlyRenderSelf = true;
            //}
			this._UseNewPage = pageRenderMode.UseNewPage;
            this._ContentTypeKey = pageRenderMode.ContentTypeKey;
            this._DispositionType = pageRenderMode.DispositionType;
            this._AttachmentFileName = pageRenderMode.AttachmentFileName;
            this._PageCache = pageRenderMode.PageCache;
            this._RenderArgument = pageRenderMode.RenderArgument;

        }
Ejemplo n.º 8
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="cache"></param>
        /// <returns></returns>
        public static int GetPageLevel(PageRenderModePageCache cache)
        {
            int level = cache.GetValue <int>(_S_PageLevelKey, 0);

            return(level);
        }
Ejemplo n.º 9
0
 /// <summary>
 ///
 /// </summary>
 /// <param name="cache"></param>
 /// <param name="id"></param>
 public static void SetPageUniqueID(PageRenderModePageCache cache, string id)
 {
     cache[_S_PageUniqueIDKey] = id;
 }
Ejemplo n.º 10
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="cache"></param>
        /// <returns></returns>
        public static string GetPageUniqueID(PageRenderModePageCache cache)
        {
            string id = cache.GetValue <string>(_S_PageUniqueIDKey, string.Empty);

            return(id == null ? string.Empty : (string)id);
        }
Ejemplo n.º 11
0
 /// <summary>
 ///
 /// </summary>
 /// <param name="cache"></param>
 /// <param name="level"></param>
 public static void SetPageLevel(PageRenderModePageCache cache, int level)
 {
     cache[_S_PageLevelKey] = level;
 }