现在的位置: 首页 > 综合 > 正文

动态改写用户控件

2012年11月26日 ⁄ 综合 ⁄ 共 2098字 ⁄ 字号 评论关闭

起因:最近看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
    }
}

 

【上篇】
【下篇】

抱歉!评论已关闭.