(实战篇)如何实现换肤和全站统一友好的错误页面

ASP.NET 实现换肤与错误页面
本文介绍了一种在ASP.NET项目中实现换肤功能的方法,通过在基类PageBase中重载PreInit事件来更改主题。此外,还介绍了如何通过重载OnError事件来实现全站统一友好的错误页面。

承接上一篇的如何实现多语言,这一篇我们讨论的是如何实现换肤,和实现全站统一友好的错误页面,这个比较简单,

废话不说,直接看思路和实现方法:

(1)先说换肤:

  总体思路是在基类pagebase里实现,构造方法里重载某个事件

 protected PageBase()
        {
            this.PreInit += new EventHandler(this.Page_PreInit);
        }
   public void Page_PreInit(object sender, EventArgs e)
        {
            if (FWConfig.CurContext.Session[FWConfig.UserInfoSession] != null)
            {
                string cTheme = Utility.LoginUserInfo.AppTheme;
                string SkinStr = ConfigurationManager.AppSettings["Skin"];
                if (CommonFunc.IsNullString(cTheme) || !SkinStr.Contains(cTheme))
                {
                    cTheme = EnumUtil.SkinType.DefaultTheme.ToString();
                }
                this.Page.Theme = cTheme;
            }
           // else 设置默认样式
         } 

 

 

 (2)再说统一友好的错误页面,重载OnError事件
 protected override void OnError(EventArgs e)
        {
            string strRootPath = this.Page.Request.ApplicationPath;
 
            //取得当前具体异常
            try
            {
                if (null != this.Server.GetLastError())
                {
                    Exception exError = this.Server.GetLastError().GetBaseException();
                    LogInfoEntity logInfoEntity = new LogInfoEntity
                   {
                       AppName = ConfigurationManager.AppSettings[ "SystemCode"],
                       OperatorUserID = Utility.LoginUserInfo.LoginID,  
                        RequestURL = this.Request.Url.ToString(),
                       MachineIP = this.Request.UserHostAddress,
                       Message = exError.Message,
                       Exception = exError.ToString(),
                       AppCode = ConfigurationManager.AppSetting[ "SystemCode"] };
                    //系统名称
                    //系统编码
                    LogUtil.Error(logInfoEntity, exError);
 
                    //给管理员发送错误邮件
                    #region 给管理员发送错误邮件
 
                    string strReceivers = CommonFunc.ObjectToNullStr(ConfigurationManager.AppSettings["OAErrorMsgRecivers"]);
                    string[] strReceiver = strReceivers.Split(',');
                    for (int i = 0; i < strReceiver.Length; i++)
                    {
                        if (CommonFunc.IsNotNullString(strReceiver[i]))
                        {
                            NotifyMsg msgEntity = new NotifyMsg
                            {
                                AppCode = "OA",
                                IsSended = false,
                                MsgXML = this.CreateWarmXML(exError.Message),
                                NotifyType = 1,
                                Reciver = strReceiver[i],
                                ReciveTime = DateTime.Now,
                                Sender = "",
                                SendTime = DateTime.Now,
                                Subject = "集团新OA系统出错Mail",
                                TempelateID = "OAErrorMsgTemplate"
                            };
 
                            new ProcTemplate().InsertNotifyMsg(msgEntity);
                        }
                    }
 
                    #endregion 给管理员发送错误邮件
 
                    this.Server.ClearError();
 
                    this.Page.Response.Redirect(strRootPath + "ErrorPage.aspx?errorMsg=" + exError.Message + "&url=" + CommonFunc.ObjectToNullStr(this.Request.Url));
                }
            }
            catch { }

 

  

以上是某个项目中的实现方式,当然方式有很都种,这个记录下来以供参考!

转载于:https://www.cnblogs.com/jangwewe/archive/2013/03/15/2961716.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值