动态改写用户控件
起因:最近看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
}
}
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
}
}