起因:最近看CMS,为了适应极度变态的需求~~

直接贴图:

动态改写用户控件_个人博客 

源代码:


动态改写用户控件_贴图_02动态改写用户控件_个人博客_03代码

using System;

using System.Collections.Generic;

using System.Linq;

using System.Web;

using System.Web.UI;

using System.Web.UI.WebControls;

using System.IO;

using BaiChang.HeaBlog.Entity;

using BaiChang.HeaBlog.Framework;


namespace BaiChang.HeaBlog.WebSite.PreReal

{

    public partial class ShowHealDiary : BaiChang .HeaBlog .Framework .HttpHandler.UserPage

    {

        string rootPath = "~/PreReal/Control/";

        string currPath = string.Empty;


        protected void Page_Load(object sender, EventArgs e)

        {

            if (!IsPostBack)

            {

                BindFilesToDropDownList();

            }

                currPath = ddlFileChoose.SelectedItem.Value;

            if(!IsPostBack )

            {

                ReadFiles();

            }

        }


        protected void ddlFileChoose_SelectedIndexChanged(object sender, EventArgs e)

        {

            currPath = ddlFileChoose.SelectedItem.Value;

            ReadFiles();

        }


        protected void btnSave_Click(object sender, EventArgs e)

        {

            File.WriteAllText(Server .MapPath ( currPath), txtPage.Text, System.Text.Encoding.Default);

            File.WriteAllText(Server.MapPath(currPath + ".cs"), txtCode.Text, System.Text.Encoding.Default);

        }


        protected void btnPreview_Click(object sender, EventArgs e)

        {

            PreViewPart.Visible = true;

            PreViewPart.Controls.Add(LoadControl(currPath));

        }


        #region Helper

        void BindFilesToDropDownList()

        {

            

            string[] files = Directory.GetFiles(Server.MapPath(rootPath),"*.ascx");

            files.ToList().ForEach(it =>

            {

                FileInfo info = new FileInfo(it);

                ddlFileChoose.Items.Add(new ListItem(info.Name, rootPath+info.Name));

            });

        }


        void ReadFiles()

        {

            txtPage.Text = File.ReadAllText(Server.MapPath(currPath), System.Text.Encoding.Default);

            txtCode.Text = File.ReadAllText(Server.MapPath(currPath + ".cs"), System.Text.Encoding.Default);

        }

        #endregion

    }

}



 


作者:KKcat