文学乐网站想做个改动,之前是用txt保存的分类数据,现在改成ascx保存

那么势必会造成N的劳动量,试了试CodeSmith,可以自动生成,省了不少工作量,

直接在VS里面启动生成的,很方便

记录一下

第一个文件时用来具体生成代码的

<%@ Template Language="C#" TargetLanguage="C#" Debug="False" %>  
    
<%@ Property Name="item" Type="HeYang.WX6.Entity.ShiGe.ShiGeCategoryInfo"  Optional="False" Category="Required" %>  
    
    
<%@ Assembly Name="HeYang.WX6.Component" Path="D:\Study\HeYang.WX6\HeYang.WX6.MainWeb\bin" %>  
<%@ Assembly Name="HeYang.WX6.Entity" Path="D:\Study\HeYang.WX6\HeYang.WX6.MainWeb\bin" %>  
    
<%@ Assembly Name="HeYang.WX6.Common" Path="D:\Study\HeYang.WX6\HeYang.WX6.MainWeb\bin" %>  
<%@ Assembly Name="Lucene.Net" Path="D:\Study\HeYang.WX6\HeYang.WX6.MainWeb\bin" %>  
 <%@ Assembly Name="HeYang.WX6.DAL" Path="D:\Study\HeYang.WX6\HeYang.WX6.MainWeb\bin" %>  
<%@ Assembly Name="HeYang.Framework" Path="D:\Study\HeYang.WX6\HeYang.WX6.MainWeb\bin" %>  
    
     
    
<%@ Import Namespace="HeYang.WX6.Component.ShiGe" %>    
    
<<%="%" %>@ Control Language="C#"<%="%" %>>  
<<%="%" %>@ Import Namespace="HeYang.WX6.Entity.ShiGe" <%="%" %>>  
<<%="%" %>@ Import Namespace="System.Collections.Generic" <%="%" %>>   
<script runat="server">    
  public ShiGeCategoryInfo ShiGeCategoryInfo = new ShiGeCategoryInfo()  
    {  
        LineId = <%=item.LineId%>,  
        SEOTitle = "<%=item.SEOTitle%>",  
        SEOKeyWords =  "<%=item.SEOKeyWords%>",  
        SEODescription = "<%=item.SEODescription%>",   
            
        Content = "<%=item.Content%>",  
        Title = "<%=item.Title%>",  
        Group =  "<%=item.Group%>",  
        Img = "<%=item.Img%>",  
        Key =  "<%=item.Key%>",  
           
        Items = new List<ShiGeSimpleInfo>() {   
            
                <% foreach(var shige in item.Items){ %>  
                new ShiGeSimpleInfo(){   
                    Id=<%=shige.Id%>,   
                    Title="<%=shige.Title%>",   
                    Content=@"<%=shige.Content%>",   
                    Author="<%=shige.Author%>", },  
                        
                <% } %>      
        },  
    };  
</script>

第二个文件是用来批量生成ascx的

<%@ Template Language="C#" TargetLanguage="C#" Debug="False" %>  
    
<%@ Register Name="Template1" Template="D:\Study\HeYang.WX6\HeYang.WX6.MainWeb\ShiGe\CategoryControls\Template1.cst" MergeProperties="False" ExcludeProperties="" %>  
    
    
<%@ Assembly Name="HeYang.WX6.Component" Path="D:\Study\HeYang.WX6\HeYang.WX6.MainWeb\bin" %>  
<%@ Assembly Name="HeYang.WX6.Entity" Path="D:\Study\HeYang.WX6\HeYang.WX6.MainWeb\bin" %>  
    
<%@ Assembly Name="HeYang.WX6.Common" Path="D:\Study\HeYang.WX6\HeYang.WX6.MainWeb\bin" %>  
<%@ Assembly Name="Lucene.Net" Path="D:\Study\HeYang.WX6\HeYang.WX6.MainWeb\bin" %>  
 <%@ Assembly Name="HeYang.WX6.DAL" Path="D:\Study\HeYang.WX6\HeYang.WX6.MainWeb\bin" %>  
<%@ Assembly Name="HeYang.Framework" Path="D:\Study\HeYang.WX6\HeYang.WX6.MainWeb\bin" %>  
    
     
    
<%@ Import Namespace="HeYang.WX6.Component.ShiGe" %>   
<%  
 var all = ShiGeManager.GetInstance().GetAllShiGeCategoryInfo();  
    
%>  
    
    
<% foreach(var itemTemp in all){   
var item= ShiGeManager.GetInstance().GetGuShiCategoryInfoById(itemTemp.Id);  
     
       
       
     CodeTemplate Template = new Template1();  
        string file = @"F:\1\" item.LineId ".ascx";  
         
     Template.SetProperty("item",item);  
            //文件输出  
            Template.RenderToFile(file,true);  
           Debug.WriteLine(file  " 创建成功.");  
                
        
 } %>

效果真的很好


Leave a Reply