zoukankan      html  css  js  c++  java
  • 2.系统设置网站配置网站信息配置

    程序流程:/Admin/Admin/SiteOption/SiteInfo.aspx页面初始化,调用Common类中的Cinfig.cs中对应方法,加载xml文件,修改按钮提交后,调用对应方法保存xml。主要代码如下。

     Config.cs类主体代码:

    public class Config
        {
            /// <summary>
            /// 获取指定文件的指定节点值
            /// </summary>
            /// <param name="fileName">文件名</param>
            /// <param name="tarGet">节点名</param>
            /// <returns>节点值</returns>
            public static string GetConfig(string fileName, string tarGet)
            {
                XmlDocument xdoc = new XmlDocument();
                string _tmp = String.Empty;
                try
                {
                    xdoc.Load(HttpContext.Current.Server.MapPath("~/App_Data/" + fileName));
                    XmlElement root = xdoc.DocumentElement;
                    XmlNodeList elemList = root.GetElementsByTagName(tarGet);
                    _tmp = elemList[0].InnerText;
                }
                catch (System.IO.FileNotFoundException)
                {
                    HttpContext.Current.Server.Transfer("~/Error.aspx?error=" + HttpContext.Current.Server.UrlEncode("配置文件" + fileName + "丢失,请检查系统!"));
                }
                catch (XmlException)
                {
                    HttpContext.Current.Server.Transfer("~/Error.aspx?error=" + HttpContext.Current.Server.UrlEncode("配置文件" + fileName + "损坏,请联系管理员修复!"));
                }
                catch (Exception ex)
                {
                    HttpContext.Current.Server.Transfer("~/Error.aspx?error=" + HttpContext.Current.Server.UrlEncode(ex.Message));
                }
                return _tmp;
            }
    
            /// <summary>
            /// 设置指定文件的指定节点值
            /// </summary>
            /// <param name="fileName">文件名</param>
            /// <param name="tarGet">节点名</param>
            /// <param name="val">节点值</param>
            public static void SetConfig(string fileName, string tarGet, string val)
            {
                XmlDocument xdoc = new XmlDocument();
                try
                {
                    xdoc.Load(HttpContext.Current.Server.MapPath("~/App_Data/" + fileName));
                    XmlElement root = xdoc.DocumentElement;
                    XmlNodeList elemList = root.GetElementsByTagName(tarGet);
                    elemList[0].InnerText = val;
                }
                catch (Exception ex)
                {
                    HttpContext.Current.Server.Transfer("~/Error.aspx?error=" + HttpContext.Current.Server.UrlEncode(ex.Message));
                }
            }
    
            /// <summary>
            /// 加载(返回)一个指定名称的XML文件
            /// </summary>
            /// <param name="fileName">XML文件名</param>
            /// <returns>XML文件</returns>
            public static XmlDocument GetXML(string fileName)
            {
                XmlDocument xdoc = new XmlDocument();
                xdoc.Load(HttpContext.Current.Server.MapPath("~/App_Data/" + fileName));
                return xdoc;
            }
    
            /// <summary>
            /// 保存一个指定的XML文件到App_Data目录
            /// </summary>
            /// <param name="fileName">XML文件名</param>
            /// <param name="xdoc"></param>
            public static void SaveXML(XmlDocument xdoc,string fileName)
            {
                try
                {
                    xdoc.Save(HttpContext.Current.Server.MapPath("~/App_Data/" + fileName));
                }
                catch (Exception ex)
                {
                    HttpContext.Current.Server.Transfer("~/Error.aspx?error=" + HttpContext.Current.Server.UrlEncode(ex.Message));
                }
            }
        }
    

    /Admin/Admin/SiteOption/SiteInfo.aspx 主体代码:

    public partial class SiteInfo : EasyFastCMS.Common.BasePage
    {
    protected void Page_Load(object sender, EventArgs e)
    {
    if (!IsPostBack)
    {
    LoadInfo();
    }
    }

    private void LoadInfo()
    {
    XmlDocument xdoc
    = Common.Config.GetXML("SiteInfo.xml");
    XmlElement root
    = xdoc.DocumentElement;
    this.Admin_Admin_SiteOption_SiteInfo_txtSiteName.Text = root.GetElementsByTagName("SiteName")[0].InnerText;
    this.Admin_Admin_SiteOption_SiteInfo_txtSiteTitle.Text = root.GetElementsByTagName("SiteTitle")[0].InnerText;
    this.Admin_Admin_SiteOption_SiteInfo_txtSiteUrl.Text = root.GetElementsByTagName("SiteUrl")[0].InnerText;
    this.Admin_Admin_SiteOption_SiteInfo_txtLogo.Text = root.GetElementsByTagName("Logo")[0].InnerText;
    this.Admin_Admin_SiteOption_SiteInfo_txtBanner.Text = root.GetElementsByTagName("Banner")[0].InnerText;
    this.Admin_Admin_SiteOption_SiteInfo_txtSiteManage.Text = root.GetElementsByTagName("SiteManage")[0].InnerText;
    this.Admin_Admin_SiteOption_SiteInfo_txtManageEmail.Text = root.GetElementsByTagName("ManageEmail")[0].InnerText;
    this.Admin_Admin_SiteOption_SiteInfo_txtCopyRight.Text = root.GetElementsByTagName("CopyRight")[0].InnerText;
    this.Admin_Admin_SiteOption_SiteInfo_txtKeyWrods.Text = root.GetElementsByTagName("KeyWords")[0].InnerText;
    this.Admin_Admin_SiteOption_SiteInfo_txtDescription.Text = root.GetElementsByTagName("Description")[0].InnerText;
    }

    protected void Admin_Admin_SiteOption_SiteInfo_btnSubmit_Click(object sender, EventArgs e)
    {
    XmlDocument xdoc
    = Common.Config.GetXML("SiteInfo.xml");
    XmlElement root
    = xdoc.DocumentElement;
    root.GetElementsByTagName(
    "SiteName")[0].InnerText = this.Admin_Admin_SiteOption_SiteInfo_txtSiteName.Text;
    root.GetElementsByTagName(
    "SiteTitle")[0].InnerText = this.Admin_Admin_SiteOption_SiteInfo_txtSiteTitle.Text;
    root.GetElementsByTagName(
    "SiteUrl")[0].InnerText = this.Admin_Admin_SiteOption_SiteInfo_txtSiteUrl.Text;
    root.GetElementsByTagName(
    "Logo")[0].InnerText = this.Admin_Admin_SiteOption_SiteInfo_txtLogo.Text;
    root.GetElementsByTagName(
    "Banner")[0].InnerText = this.Admin_Admin_SiteOption_SiteInfo_txtBanner.Text;
    root.GetElementsByTagName(
    "SiteManage")[0].InnerText = this.Admin_Admin_SiteOption_SiteInfo_txtSiteManage.Text;
    root.GetElementsByTagName(
    "ManageEmail")[0].InnerText = this.Admin_Admin_SiteOption_SiteInfo_txtManageEmail.Text;
    root.GetElementsByTagName(
    "CopyRight")[0].InnerText = this.Admin_Admin_SiteOption_SiteInfo_txtCopyRight.Text;
    root.GetElementsByTagName(
    "KeyWords")[0].InnerText = this.Admin_Admin_SiteOption_SiteInfo_txtKeyWrods.Text;
    root.GetElementsByTagName(
    "Description")[0].InnerText = this.Admin_Admin_SiteOption_SiteInfo_txtDescription.Text;
    Common.Config.SaveXML(xdoc,
    "SiteInfo.xml");
    ScriptManager.RegisterClientScriptBlock(
    this, this.GetType(), "", "<script language=\"javascript\">alert(\"修改成功!\");</script>", false);
    }
    }

    关键点分析:

      public partial class SiteInfo : EasyFastCMS.Common.BasePage 页面继承的基类由默认的System.Web.UI.Page变成自定义的EasyFastCMS.Common.BasePage 在B/S结构的编程中,在每一个页面我们都要去进行一些初始化的检查工作,例如检测Seesion是否过期,检测是否有对应的权限等。但是,如果再每个页面的Load方法中都去检测,那么将造成大量的冗余代码。给程序的维护和开发带来很大负担。所以在B/S结构中,一般需要编写一个默认的基类。再该基类中进行这些判断。BasePage.cs的主要代码如下:

    /// <summary>
    /// 页面基类
    /// </summary>
    public class BasePage : System.Web.UI.Page
    {
    protected override void OnInit(EventArgs e)
    {
    base.OnInit(e);
    this.Load += new System.EventHandler(this.Page_Load);

    }

    protected override void OnLoad(EventArgs e)
    {
    //if (Session.Count < 4)
    //{
    // Response.Redirect("~/Error.aspx?msg=" + HttpUtility.UrlEncode("登录过期,请重新登录!"));
    //}
    base.OnLoad(e);
    }

    #region 权限检查
    /// <summary>
    /// 页面访问权限ID。
    /// </summary>
    public virtual int PermissionID
    {
    get { return -1; }
    }

    //public AccountsPrincipal CurrentPrincipal
    //{
    // get
    // {
    // if (Context.User.Identity.IsAuthenticated)
    // {
    // AccountsPrincipal user = new AccountsPrincipal(Context.User.Identity.Name);
    // return user;
    // }
    // return null;
    // }
    //}

    #endregion

    #region 页面事件
    private void Page_Load(object sender, System.EventArgs e)
    {

    //string loginPage = ConfigurationManager.AppSettings.Get("LoginPage");//登录页地址
    //if (Context.User.Identity.IsAuthenticated)
    //{
    // //AccountsPrincipal user = new AccountsPrincipal(Context.User.Identity.Name);
    // if(Session["UserName"].ToString()!="Administrator")
    // {
    // if ((PermissionID != -1) && (!user.HasPermissionID(PermissionID)))
    // {
    // Response.Clear();
    // Response.Write("<script defer>window.alert('您没有权限进入本页!');history.back();</script>");
    // Response.End();
    // }
    // }

    //}
    //else
    //{
    // FormsAuthentication.SignOut();
    // Session.Clear();
    // Session.Abandon();
    // Response.Redirect("~/Error.aspx?msg=" + HttpUtility.UrlEncode("登录过期,请重新登录!")");
    //}
    }
    #endregion
    }

    下节我们编写系统设置-网站配置-网站参数配置。

    本节代码下载地址:http://bbs.easyfast.cn/Code/thread-4-1-1.aspx

    求助:博客园是否可以上传附件?自己维护一个论坛挺累的,呵呵。

  • 相关阅读:
    oracle 存储过程 游标
    SQL DateTime查询与格式
    Oracle 中的 TO_DATE 和 TO_CHAR 函数 日期处理
    C#命名规范
    (转)javascript——各种网页常用小技巧
    (转)WEB免费打印控件推荐
    JS倒计时代码
    使用重写 ajax 用的一些基础东西
    (转)动态加载CSS
    (转)用Javascript获取页面元素的位置
  • 原文地址:https://www.cnblogs.com/cnuusw/p/2155554.html
Copyright © 2011-2022 走看看