动态改写用户控件

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

直接贴图:

 

源代码:

代码
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
    
个人博客:http://jinzhao.me/
    
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
原文地址:https://www.cnblogs.com/jinzhao/p/1631614.html