⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 desktopcontrols.cs

📁 三层架构的.net源码三层架构的.net源码
💻 CS
字号:
using System;
using System.IO;
using System.ComponentModel;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace MyStarterKit.Portal.Web {

    //*********************************************************************
    //
    // PortalModuleControl Class
    //
    // The PortalModuleControl class defines a custom base class inherited by all
    // desktop portal modules within the Portal.
    // 
    // The PortalModuleControl class defines portal specific properties
    // that are used by the portal framework to correctly display portal modules
    //
    //*********************************************************************

    /// <summary>
    /// 门户站点用户控件基类
    /// </summary>
	public class PortalModuleControl : UserControl 
	{
        // Private field variables
		// 私有变量
        private ModuleSettings  _moduleConfiguration;		//模块设置信息
        private int             _isEditable = 0;			//
        private int             _portalId = 0;				//所属门户站点Id
        private Hashtable       _settings;					//

		#region	公共属性

		// Public property accessors
		/// <summary>
		/// 模块Id
		/// </summary>
        [Browsable(false),DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
        public int ModuleId 
		{
            get 
			{
                return (int) _moduleConfiguration.ModuleId;
            }
        }    

		/// <summary>
		/// 所属门户站点Id
		/// </summary>
        [Browsable(false),DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
        public int PortalId 
		{
            get 
			{
                return _portalId;
            }
            set 
			{
                _portalId = value;
            }
        }
        
        /// <summary>
        /// 模块是否处于编辑模式的标记属性(true:可编辑/false:不可编辑)
        /// </summary>
		[Browsable(false),DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
        public bool IsEditable 
		{
            get 
			{
                // Perform tri-state switch check to avoid having to perform a security
                // role lookup on every property access (instead caching the result)

                if (_isEditable == 0) 
				{
                    // Obtain PortalSettings from Current Context

                    PortalSettings portalSettings = (PortalSettings) HttpContext.Current.Items["PortalSettings"];

                    if (portalSettings.AlwaysShowEditButton == true || PortalSecurity.IsInRoles(_moduleConfiguration.AuthorizedEditRoles)) 
					{
                        _isEditable = 1;
                    }
                    else 
					{
                        _isEditable = 2;
                    }
                }

                return (_isEditable == 1);
            }
        }

        /// <summary>
        /// 模块设置信息
        /// </summary>
		[Browsable(false),DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
        public ModuleSettings ModuleConfiguration 
		{

            get 
			{
                return _moduleConfiguration;
            }
            set 
			{
                _moduleConfiguration = value;
            }
        }

        /// <summary>
        /// 获取指定用户模块的设置信息(为XML/XSL模板和图片模板时设置XML/XSL文件和图片的地址)
        /// </summary>
		[Browsable(false),DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
        public Hashtable Settings 
		{
            get 
			{
                if (_settings == null) 
				{

                    _settings = Configuration.GetModuleSettings(ModuleId);
                }

                return _settings;
            }
         }

		#endregion
    }
    
    //*********************************************************************
    //
    // CachedPortalModuleControl Class
    //
    // The CachedPortalModuleControl class is a custom server control that
    // the Portal framework uses to optionally enable output caching of 
    // individual portal module's content.
    //
    // If a CacheTime value greater than 0 seconds is specified within the 
    // ASPNET.StarterKit.Portal.Config configuration file, then the CachePortalModuleControl
    // will automatically capture the output of the Portal Module User Control
    // it wraps.  It will then store this captured output within the ASP.NET
    // Cache API.  On subsequent requests (either by the same browser -- or
    // by other browsers visiting the same portal page), the CachedPortalModuleControl
    // will attempt to resolve the cached output out of the cache.
    //
    // Note: In the event that previously cached output can't be found in the
    // ASP.NET Cache, the CachedPortalModuleControl will automatically instatiate
    // the appropriate portal module user control and place it within the
    // portal page.
    //
    //*********************************************************************

    public class CachedPortalModuleControl : Control 
	{

        // Private field variables

        private ModuleSettings  _moduleConfiguration;
        private String          _cachedOutput = "";
        private int             _portalId = 0;


        // Public property accessors

        public ModuleSettings ModuleConfiguration 
		{

            get {
                return _moduleConfiguration;
            }
            set {
                _moduleConfiguration = value;
            }
        }

        public int ModuleId 
		{

            get {
                return _moduleConfiguration.ModuleId;
            }
        }

        public int PortalId 
		{

            get {
                return _portalId;
            }
            set {
                _portalId = value;
            }
        }

        //*********************************************************************
        //
        // CacheKey Property
        //
        // The CacheKey property is used to calculate a "unique" cache key
        // entry to be used to store/retrieve the portal module's content
        // from the ASP.NET Cache.
        //
        //*********************************************************************

        public String CacheKey 
		{

            get {
                return "Key:" + this.GetType().ToString() + this.ModuleId + PortalSecurity.IsInRoles(_moduleConfiguration.AuthorizedEditRoles);
            }
        }

        //*********************************************************************
        //
        // CreateChildControls Method
        //
        // The CreateChildControls method is called when the ASP.NET Page Framework
        // determines that it is time to instantiate a server control.
        // 
        // The CachedPortalModuleControl control overrides this method and attempts
        // to resolve any previously cached output of the portal module from the 
        // ASP.NET cache.  
        //
        // If it doesn't find cached output from a previous request, then the
        // CachedPortalModuleControl will instantiate and add the portal module's
        // User Control instance into the page tree.
        //
        //*********************************************************************

        protected override void CreateChildControls() {

            // Attempt to resolve previously cached content from the ASP.NET Cache

            if (_moduleConfiguration.CacheTime > 0) {
                _cachedOutput = (String) Context.Cache[CacheKey];
            }

            // If no cached content is found, then instantiate and add the portal
            // module user control into the portal's page server control tree

            if (_cachedOutput == null) {

                base.CreateChildControls();

                PortalModuleControl module = (PortalModuleControl) Page.LoadControl(_moduleConfiguration.DesktopSrc);
                
                module.ModuleConfiguration = this.ModuleConfiguration;
                module.PortalId = this.PortalId;

                this.Controls.Add(module);
            }
        }

        //*********************************************************************
        //
        // Render Method
        //
        // The Render method is called when the ASP.NET Page Framework
        // determines that it is time to render content into the page output stream.
        // 
        // The CachedPortalModuleControl control overrides this method and captures
        // the output generated by the portal module user control.  It then 
        // adds this content into the ASP.NET Cache for future requests.
        //
        //*********************************************************************

        protected override void Render(HtmlTextWriter output) {

            // If no caching is specified, render the child tree and return 

            if (_moduleConfiguration.CacheTime == 0) {
                base.Render(output);
                return;
            }

            // If no cached output was found from a previous request, render
            // child controls into a TextWriter, and then cache the results
            // in the ASP.NET Cache for future requests.

            if (_cachedOutput == null) {

                TextWriter tempWriter = new StringWriter();
                base.Render(new HtmlTextWriter(tempWriter));
                _cachedOutput = tempWriter.ToString();

                Context.Cache.Insert(CacheKey, _cachedOutput, null, DateTime.Now.AddSeconds(_moduleConfiguration.CacheTime), TimeSpan.Zero);
            }

            // Output the user control's content

            output.Write(_cachedOutput);
        }
    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -