动态改写用户控件

起因:最近看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
    }
}
复制代码


 

posted @   today4king  阅读(300)  评论(0编辑  收藏  举报
编辑推荐:
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架
历史上的今天:
2008-12-24 《Asp.Net 2.0 揭秘》读书笔记(四)
2008-12-24 《Asp.Net 2.0 揭秘》读书笔记(三)
2008-12-24 截取字符串时长度的问题
2008-12-24 《Asp.Net 2.0 揭秘》读书笔记(二)
点击右上角即可分享
微信分享提示
主题色彩