Page基类的重写

using System;
using System.ComponentModel;
using System.Configuration;
using System.IO;
using System.Text;
using System.Text.RegularExpressions;
using System.Web.UI;
using Dealeasy.Ex;
using System.Web.UI.WebControls;

 [DesignerCategory("ASPXCodeBehind")]
    public class Base: PageBase
    {
        private static readonly string EventSetMultiLanguage = "EventSetMultiLanguage";
        private static readonly string EventSetDocumentTitle = "EventSetDocumentTitle";
        private static readonly string EventAddClientScriptForControls = "EventAddClientScriptForControls";
        private static readonly string EventProcessControlsWithStatus = "EventProcessControlsWithStatus";
        private static readonly string EventSetValueForDataControls = "EventSetValueForDataControls";



        protected override void OnLoad(EventArgs e)
        {
            base.OnLoad(e);

            if (Events != null)
            {
                EventHandler handler = Events[EventSetDocumentTitle] as EventHandler;
                if (handler != null)
                {
                    handler(this, e);
                }
            }

            // set page's title
            if (!DocumentTitle.Equals(string.Empty))
            {
                ClientScript.RegisterClientScriptBlock(GetType(), "___asp2TrainingSetDocumentTitleJavascript",
                                                       "<script language=/"javascript/">document.title=/"" +
                                                       DocumentTitle + "/";</script>");
            }

            // register javascript from JavascriptFileUrl
            RegisterJavaScript();

            // event: add javascript event for controls on page in it
            if (Events != null)
            {
                EventHandler handler = Events[EventAddClientScriptForControls] as EventHandler;
                if (handler != null)
                {
                    handler(this, e);
                }
            }

            if (!IsPostBack)
            {
                // verify whether current user can run this page.
                //CheckPermission();


                // event: set multi-language for controls on page in it.
                if (Events != null)
                {
                    EventHandler handler = Events[EventSetMultiLanguage] as EventHandler;
                    if (handler != null)
                    {
                        handler(this, e);
                    }
                }

                // change controls' state on page by page state
                if (Events != null)
                {
                    EventHandler handler = Events[EventProcessControlsWithStatus] as EventHandler;
                    if (handler != null)
                    {
                        handler(this, e);
                    }
                }

                // event: initialize data for controls on page in it
                if (Events != null)
                {
                    EventHandler handler = Events[EventSetValueForDataControls] as EventHandler;
                    if (handler != null)
                    {
                        handler(this, e);
                    }
                }
            }
        }

        [Description(" Event, set multi-language for controls on page in it. /n Only occured before page PostBack. ")]
        public virtual event EventHandler SetMultiLanguage
        {
            add { Events.AddHandler(EventSetMultiLanguage, value); }
            remove { Events.RemoveHandler(EventSetMultiLanguage, value); }
        }

        [Description(" Event, set title of the page. /n Occur page every PostBack. ")]
        public virtual event EventHandler SetDocumentTitle
        {
            add { Events.AddHandler(EventSetDocumentTitle, value); }
            remove { Events.RemoveHandler(EventSetDocumentTitle, value); }
        }


        [Description(" Event, change controls' state on page by page state. /n Only occured before page PostBack. ")]
        public virtual event EventHandler ProcessControlsWithStatus
        {
            add { Events.AddHandler(EventProcessControlsWithStatus, value); }
            remove { Events.RemoveHandler(EventProcessControlsWithStatus, value); }
        }

        [Description(" Event, add javascript event for controls on page in it./n Only occured before page PostBack. ")]
        public virtual event EventHandler AddClientScriptForControls
        {
            add { Events.AddHandler(EventAddClientScriptForControls, value); }
            remove { Events.RemoveHandler(EventAddClientScriptForControls, value); }
        }


        [Description(
            " Event, initialize data for controls on page in it. /n eg. DropDownList, DataGrid... /n Only occured before page PostBack. "
            )]
        public virtual event EventHandler SetValueForDataControls
        {
            add { Events.AddHandler(EventSetValueForDataControls, value); }
            remove { Events.RemoveHandler(EventSetValueForDataControls, value); }
        }



        [Description(" Property, page's state. /n Save it in a hidden TextBox. ")]
        public virtual string PageStatus
        {
            get
            {
                object ps = GetFromViewState("___asp2TrainingPageStatusTextBox");
                if (ps != null)
                {
                    return ps.ToString();
                }
                return "";
            }
            set { SaveToViewState("___asp2TrainingPageStatusTextBox", value); }
        }

        private string javascriptUrl = "";

       
        [Description(" Url of javascript file. /n All script will write in the first of body tag. ")]
        public virtual string JavascriptFileUrl
        {
            set { javascriptUrl = value; }
            get { return javascriptUrl; }
        }

        private string pageId = "";

      
        [Description(" Property: id of page. ")]
        public virtual string PageId
        {
            get { return pageId; }
            set { pageId = value; }
        }

        private string userId = "";

       
        [Description(" Property: user id of logined user. ")]
        public virtual string UserId
        {
            get { return userId; }
            set { userId = value; }
        }

        private string documentTitle = "";

        
        [Description(" Property: title of page ")]
        public virtual string DocumentTitle
        {
            set { documentTitle = value; }
            get { return documentTitle; }
        }

    
        protected virtual void CheckPermission()
        {
        }

        
        protected virtual void RegisterJavaScript()
        {
            if (!JavascriptFileUrl.Equals(string.Empty) &&
                !ClientScript.IsClientScriptBlockRegistered(GetType(), "___asp2TrainingFunctionJavascript"))
            {
                string path = Server.MapPath(JavascriptFileUrl);
                if (File.Exists(path))
                {
                    StreamReader sr = new StreamReader(path);
                    string script = sr.ReadToEnd();
                    sr.Close();

                    if (!script.Trim().ToLower().StartsWith("<script"))
                    {
                        script = "<script language=/"javascript/"" + script;
                    }

                    if (script.Trim().ToLower().EndsWith("</script>"))
                    {
                        script += "</script>";
                    }
                    ClientScript.RegisterClientScriptBlock(GetType(), "___asp2TrainingFunctionJavascript", script);
                }
            }
        }

   
        protected virtual void SaveToViewState(string name, object value)
        {
            if (ViewState[name] == null)
            {
                ViewState.Add(name, value);
            }
            else
            {
                ViewState[name] = value;
            }
        }


        protected virtual object GetFromViewState(string name)
        {
            return ViewState[name];
        }


        protected virtual void SaveToSession(string name, object value)
        {
            if (Session[name] == null)
            {
                Session.Add(name, value);
            }
            else
            {
                Session[name] = value;
            }
        }


        protected virtual object GetFromSession(string name)
        {
            return Session[name];
        }

    
        protected virtual void ShowMessage(string msg)
        {
            ClientScript.RegisterStartupScript(GetType(), "___asp2TrainingShowMessage",
                                               "<script language=/"javascript/">var str=/"" +
                                               msg.Replace("//", "").Replace("/r/n", " ").Replace("/"", "'") +
                                               "/";alert(str.replace(/<br>/g,'//n').replace(/<BR>/g,'//n'));</script>");
        }

 
        protected virtual bool IsFromPageB()
        {
            // If requested url is null, then NOT back from page B
            if (Request.UrlReferrer != null)
            {
                // Current request url
                string refererUrl = Request.UrlReferrer.GetLeftPart(UriPartial.Path).ToUpper();

                // Priv request url
                string currentUrl = Request.Url.GetLeftPart(UriPartial.Path).ToUpper();

                // If equal when replaced "B.ASPX" with "A.ASPX", then back from page B
                if (refererUrl.Replace("B.ASPX", "A.ASPX").Equals(currentUrl))
                {
                    return true;
                }
            }

            return false;
        }


        protected virtual void ShowMessage(DealeasyException dex)
        {
            dex.UserId = UserId;

            if (dex.Msg == null || dex.Msg.Equals(string.Empty))
            {
                dex.Msg = dex.Message;
            }

            if (dex.ErrorType == MessageType.Warning || dex.ErrorType == MessageType.Error)
            {
                ShowMessage(dex.Msg);
            }
            else
            {
                DealeasyException.Dex = dex;

                string errPageUrl = Request.ApplicationPath + ConfigurationManager.AppSettings["ErrorPageUrl"];

                if (IsValidUrl(errPageUrl))
                {
                    Response.Redirect(errPageUrl);
                }
            }
        }


        public bool IsValidUrl(string url)
        {
            string pattern = @"^(/w+):([^/:]+)(:/d*)?([^# ]*)";

            if (Regex.IsMatch(url, pattern))
            {
                return true;
            }

            return false;
        }

        /// <summary>
        /// open a client window type is modal
        /// </summary>
        /// <param name="url"></param>
        /// <param name="features"></param>
        protected virtual void OpenModalWindow(string url, string features)
        {
            StringBuilder script = new StringBuilder();
            if (url != null && !url.Equals(string.Empty))
            {
#if ( DEBUG )
                //script = script.AppendFormat("window.open(/"../frames.aspx?framePage={0}/"", url);
                script = script.AppendFormat("window.open(/"{0}/"", url);
#else
    //script = script.AppendFormat("window.showModalDialog(/"../frames.aspx?framePage={0}/"", url);
    script = script.AppendFormat("window.showModalDialog(/"{0}/"", url);
    if (features != null && !features.Equals(string.Empty))
    {
     script = script.AppendFormat(",window,{0}", features);
    }
#endif

                script = script.Append(");");
                ClientScript.RegisterStartupScript(GetType(), "__scmhubShowModalDialog",
                                                   "<script language=/"javascript/">" + script + "</script>");
            }
        }

       
        protected virtual void CloseClientWindow()
        {
            StringBuilder script = new StringBuilder();
            script = script.AppendFormat("<script language=/"javascript/">{0}</script>", "opener=null; close();");
            ClientScript.RegisterStartupScript(GetType(), "__scmhubCloseWindow", script.ToString());
        }
        protected virtual void ParamentSubmit()
        {
            StringBuilder script = new StringBuilder();
            script = script.AppendFormat("<script language=/"javascript/">{0}</script>", "opener.document.form1.submit(); close();");
            ClientScript.RegisterStartupScript(GetType(), "__hubCloseWindow", script.ToString());
        }
       protected virtual void SubmitParent()
        {
            StringBuilder script = new StringBuilder();
            script = script.AppendFormat("<script language=/"javascript/">{0}</script>", "opener.document.form1.submit(); close();");
            ClientScript.RegisterStartupScript(GetType(), "__scmCloseWindow", script.ToString());
        }

        protected virtual void ShowWindowWithButton(Button btn, string WindowPageName, int WinTop, int WinLeft, int WinHeight, int WinWidth)
        {
            string strScript = "javascript:window.showModalDialog(/"{0}/",window,/"dialogTop:{1}px;dialogLeft:{2}px;" +
                "dialogHeight:{3}px;dialogWidth:{4}px;edge:raised;status:no;help:no;/"); return false; ";
            strScript = string.Format(strScript, WindowPageName, WinTop, WinLeft, WinHeight, WinWidth);
            btn.Attributes.Add("onclick", strScript);
        }

                protected virtual void ShowWindowWithButton(Button btn, string WindowPageName)
        {
            string strScript = "javascript:window.showModalDialog(/"{0}/",window,/"dialogTop:200px;dialogLeft:400px;" +
                "dialogHeight:300px;dialogWidth:400px;edge:raised;status:no;help:no;/"); return false; ";
            strScript = string.Format(strScript, WindowPageName);
            btn.Attributes.Add("onclick", strScript);
        }

    }

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值