asp.net1.1 开发专用模板类
点击次数:15 次 发布日期:2008-11-26 12:42:32 作者:源代码网
|
源代码网推荐 源代码网推荐 做web开发也有几年了。自己在不同的公司有不同的认识。最近做blog项目。自己认识到了模板类在web开发中的作用。自己晚上在家。总想可以做一个专门的为asp.ne开发而设计的模板类。于是就写了这个模板类。 源代码网推荐 源代码网推荐 源代码网推荐 源代码网推荐 把下载下来的 500sea.txt 文件改名为 Templet.rar 文件打开就可以 源代码网推荐 源代码网推荐 如果打开 源代码网推荐 http://img.club.163.com/images/user/other/500sea 源代码网推荐 没有提示 500sea.txt文件下载。那就用网络快车等东西下这个地址 源代码网推荐 把下来的500sea.txt文件 改为 *.rar 文件就好 源代码网推荐 源代码网推荐 源代码网推荐 下面是里面的一个说明文件 源代码网推荐 源代码网推荐 //---------------------------------------------------------------------------------------------------------------------------// 源代码网推荐 源代码网推荐 源代码网推荐 介绍: 源代码网推荐 此模板类是为三层架构web站点开发而编写的。StringTempletReplet.dll组件 源代码网推荐 内包含模板类。StringTempletReplet命名空间内的模板类可以使用在UI层,也可 源代码网推荐 以使用在逻辑层。 源代码网推荐 ***************************************************************************** 源代码网推荐 运行方法: 源代码网推荐 建立一个名叫 Templet 的虚拟目录指象解压后的 Templet 文件夹 源代码网推荐 运行内部的 RetuenString.aspx,ReturnText.aspx,WriteArticon.aspx, 源代码网推荐 LongLoop.aspx 页面。在页面对应的cs文件上有相应说明。 源代码网推荐 第一次打开页面应为要保留委托对象和模板文件到缓存中,所以真正的速度要看第 源代码网推荐 一次以后的。 源代码网推荐 ***************************************************************************** 源代码网推荐 原理介绍: 源代码网推荐 一种标签替换的模板。使用了c#中的指针运算查找标签位置。 源代码网推荐 用委托对象指象标签对应的解析函数,并用静态对象缓存全部委托对象。 源代码网推荐 在不改变模板正文的情况下,缓存全部模板内容。可以动态更换模板。 源代码网推荐 **************************************************************************** 源代码网推荐 标签介绍: 源代码网推荐 在成对特殊符号{$ 和 $} 之间的内容为标签 源代码网推荐 如 源代码网推荐 {$标签名:参数1:参数2:参数3::字符10$} 源代码网推荐 {$标签名:参数1:参数2::字节10$} 源代码网推荐 {$dt[5][name]$} 源代码网推荐 在标签内部通过 :: 符号把标签分为 (标签参数部分) 和 (命令控制部分) 两快 源代码网推荐 {$标签名:参数1:参数2:参数3::字节10$} 源代码网推荐 (标签参数部分) :: (命令控制部分) 源代码网推荐 在这两部分内以:号分割标签参数部分和命令控制部分 源代码网推荐 标签参数部分 ---第一个为标签名,就是标签解析函数的对应名称,以后的为函数的参数, 源代码网推荐 标签解析函数接受全部参数类型为string类型的,参数个数为0--20个的 源代码网推荐 函数,返回类型为string类型。参数可在标签上写死,也可以动态写入。 源代码网推荐 源代码网推荐 命令控制部分 ---现在只有两个命令符号 字符 和 字节 ,后带一个数字参数,表示截取标 源代码网推荐 签解析结果的长度, 如 字符10 字节10 。 源代码网推荐 源代码网推荐 我以后会在扩展其他的命令控制符号。 源代码网推荐 源代码网推荐 标签和函数对应请看Business.cs 文件内说明 源代码网推荐 标签具体使用规则请看Templet/templet/aa1.htm 模板内说明 源代码网推荐 具体调用规则请看项目中的这三个aspx页面 源代码网推荐 WriteArticon.aspx -- 读模板 解析 写入文件 用于产生静态页面的新闻系统 源代码网推荐 ReturnText.aspx -- 读模板 解析 返回字符串 用与写经常要改变外观的页面, 源代码网推荐 换皮肤的页面。可动态更换模板 。 源代码网推荐 RetuenString.aspx -- 接受标签字符串,返回解析结果。常用与ajax。 源代码网推荐 ****************************************************************************** 源代码网推荐 源代码网推荐 标签动态取值: 源代码网推荐 标签解析函数除可以接受标签内传来的固定参数外。可以有三种方式接受动态参数 源代码网推荐 象模板类传递 Datatable 和 Hashtable 对象以后 源代码网推荐 (Datatable 从数据层获取 ,Hashtable 一般是页面变量 和其他变量) 源代码网推荐 1。 dt[5][name] ---- 表示取Datatable内5行name列上的数值,第一个为数字, 源代码网推荐 第二个是列名 源代码网推荐 2。 dt[name] ---- 在loop循环外表示取Datatable内0行name列上的数值, 源代码网推荐 一个参数表示列名 源代码网推荐 源代码网推荐 ---- 在loop循环内表示取Datatable内name列上的数值,取那 源代码网推荐 些行通过loop标签的参数决定 源代码网推荐 3。 page[PageId] ----- 表示取Hashtable对象内PageId键上的数值,返回string类型 源代码网推荐 如 {$二个参数书签:dt[3][word]:page[UserId]::字符10$} 源代码网推荐 源代码网推荐 {$dt[5][name]$} {$dt[name]$} {$page[PageId]$} 源代码网推荐 源代码网推荐 或 源代码网推荐 源代码网推荐 {$dt[5][name]::字符10$} {$dt[name]::字符10$} {$page[PageId]::字符10$} 源代码网推荐 源代码网推荐 这样的标签表示直接在页面上显示对象内的数值 源代码网推荐 **************************************************************************** 源代码网推荐 页面或类内调用模板类方法: 源代码网推荐 可在页面或类内调用 源代码网推荐 源代码网推荐 产生对象,关联对应标签函数解析类 源代码网推荐 源代码网推荐 源代码网推荐 //在这里我门只要在这一行后面 new Business() 一个Business类对象就可以了 源代码网推荐 //用接口实现多态,代码看起来有点麻烦。 自己用的时候只要修改最后一个"new Business()" 为自己的包含标签解析函数的类就可以了 源代码网推荐 ILabelAnalyStart objILabel=(ILabelAnalyStart) new TempletReplet(new Business()); 源代码网推荐 源代码网推荐 //读模板路径属性 源代码网推荐 objILabel.ReadFilePath=this.Server.MapPath("templet/aa1.htm"); 源代码网推荐 源代码网推荐 //写文件路径属性 源代码网推荐 objILabel.WritFilePath=this.Server.MapPath("page/aa1.html"); 源代码网推荐 源代码网推荐 //获取数据表对象 源代码网推荐 objILabel.LabelDatatable=ds.Tables[0]; 源代码网推荐 源代码网推荐 //把这个页面上的变量用Hashtable对象传近模板类 源代码网推荐 objILabel.LabelHashtable=ht; 源代码网推荐 源代码网推荐 然后可以实现三种替换 源代码网推荐 //开始替换写模板 源代码网推荐 objILabel.LaberReplet(); 源代码网推荐 //返回解析结果 源代码网推荐 string aa=objILabel.LaberRepletText(); 源代码网推荐 //返回解析结果,这个是直接接受模板字符串的,具体看RetuenString.cs文件 源代码网推荐 string aa=objILabel.LaberRepletString(); 源代码网推荐 源代码网推荐 详细可看这三个文件的cs文件 源代码网推荐 WriteArticon.aspx -- 读模板 解析 写入文件 用于产生静态页面的新闻系统 源代码网推荐 ReturnText.aspx -- 读模板 解析 返回字符串 用与写经常要改变外观的页面 源代码网推荐 换皮肤的页面 源代码网推荐 RetuenString.aspx -- 接受标签字符串 返回解析结果。常用与ajax 源代码网推荐 源代码网推荐 **************************************************************************** 源代码网推荐 标签函数关联: 源代码网推荐 具体详细请看 Business.cs 文件 源代码网推荐 源代码网推荐 在逻辑层对应的类的静态构造器内,加如下代码。 源代码网推荐 源代码网推荐 //调用静态构造器,把标签执行函数委托放到静态哈希表内 源代码网推荐 //必须执行这个方法 源代码网推荐 static Business() 源代码网推荐 { 源代码网推荐 Business _this=new Business(); 源代码网推荐 源代码网推荐 FunctionList.objFunctionHashtable.Add("无参书签",new KeyItemDelegate(new UserDelegate.Run_0(_this.show),0)); 源代码网推荐 源代码网推荐 FunctionList.objFunctionHashtable.Add("一个参数书签",new KeyItemDelegate(new UserDelegate.Run_1(_this.tag),1)); 源代码网推荐 源代码网推荐 FunctionList.objFunctionHashtable.Add("二个参数书签",new KeyItemDelegate(new UserDelegate.Run_2(_this.tag_two),2)); 源代码网推荐 源代码网推荐 源代码网推荐 //书签和执行函数关联。放到书签解析类的静态构造函数内。是为了可以完全使用内存中的对象,不每次都执行 源代码网推荐 // "一个参数书签" 字符对应 public string tag(string aa) 函数 对应模式为在哈希表上加key和value 源代码网推荐 // ("一个参数书签",new KeyItemDelegate(new UserDelegate.Run_1(_this.tag),1)); 源代码网推荐 // 标签名 | | | 源代码网推荐 // 一个参数就用Run_1委托。 | | 源代码网推荐 // 对应的标签执行函数 | 源代码网推荐 // 一个参数就写数字一 源代码网推荐 源代码网推荐 // 0 个或多个上面有对应例子 源代码网推荐 } 源代码网推荐 源代码网推荐 源代码网推荐 具体详细请看 Business.cs 文件 源代码网推荐 源代码网推荐 ***************************************************************************** 源代码网推荐 标签内loop循环介绍: 源代码网推荐 标签内通过一些特殊符号,可以实现非嵌套loop循环 源代码网推荐 源代码网推荐 源代码网推荐 //------------------------------------------------------------------------ 源代码网推荐 {$loop(3,0,alter)$} //显示三行,从0行开始,如果有交替列,运行交替列 源代码网推荐 {$BlockItem$} //默认的循环行, 源代码网推荐 源代码网推荐 <td bgcolor="#33ccff">标题:{$dt[5][name]$} , 作者:{$一个参数:dt[dddf]$}</td> 源代码网推荐 源代码网推荐 {$/BlockItem$} 源代码网推荐 源代码网推荐 源代码网推荐 {$BlockAlterItem$} // 交替循环行 当没有默认行标签对,有交替循标签对。就把交替循标签对当默认行标签对 源代码网推荐 源代码网推荐 <td bgcolor="#ff6699">标题:{$dt[5][name]$} , 作者:{$一个参数:dt[dddf]$}</td> 源代码网推荐 源代码网推荐 {$/BlockAlterItem$} 源代码网推荐 源代码网推荐 源代码网推荐 {$BlockPatch$} //当要循环的行数大于Datatable内的行数时,用这里的内容补充显示 。 如果没有 “补充” 标签对。那么当显示行数大于Datatable中的行数时,将只显示Datatable中的行数 源代码网推荐 源代码网推荐 <td bgcolor="#33ccff">补充(里面也可以使用标签)</td> 源代码网推荐 源代码网推荐 {$/BlockPatch$} 源代码网推荐 源代码网推荐 源代码网推荐 {$BlockAlterPatch$} //没有补充标签对,有交替补充标签对。就把交替补充标签对当补充标签对 源代码网推荐 源代码网推荐 <td bgcolor="#ff6699">交替补充(里面也可以使用标签)</td> 源代码网推荐 源代码网推荐 {$/BlockAlterPatch$} 源代码网推荐 源代码网推荐 {$/loop$} //循环结束 源代码网推荐 //-------------------------------------------------------------- 源代码网推荐 源代码网推荐 {$BlockItem$} {$/BlockItem$} :默认的循环行标签对 源代码网推荐 {$BlockAlterItem$} {$/BlockAlterItem$} :交替循环行标签对 源代码网推荐 {$BlockPatch$} {$/BlockPatch$} :默认补充行标签对 源代码网推荐 {$BlockAlterPatch$} {$/BlockAlterPatch$} :交替补充行标签对 源代码网推荐 源代码网推荐 //------------------------------------------------------ 源代码网推荐 源代码网推荐 如果只有默认的循环行可以不加{$BlockItem$}标签对 源代码网推荐 如 源代码网推荐 {$loop(3,0,alter)$} 源代码网推荐 <tr><td>{$函数标签$}</td></tr> 源代码网推荐 {$/loop$} 源代码网推荐 和 源代码网推荐 {$loop(3,0,alter)$} 源代码网推荐 {$BlockItem$}<tr><td>{$函数标签$}</td></tr>{$/BlockItem$} 源代码网推荐 {$/loop$} 源代码网推荐 是表示一样的效果 源代码网推荐 源代码网推荐 源代码网推荐 //------------------------------------------------------------- 源代码网推荐 源代码网推荐 源代码网推荐 {$loop(3,0,alter)$} 源代码网推荐 {$BlockAlterPatch$} 源代码网推荐 <tr><td>{$函数标签$}</td></tr> 源代码网推荐 {$/BlockAlterPatch$} 源代码网推荐 {$/loop$} 源代码网推荐 如果只有交替循环行标签对没有默认的循环行标签对那么交替循环行标签对将自动转换为 源代码网推荐 默认循环行标签对 源代码网推荐 源代码网推荐 源代码网推荐 //-------------------------------------------------------------- 源代码网推荐 源代码网推荐 {$loop(3,0,alter)$} 源代码网推荐 {$BlockAlterPatch$} 源代码网推荐 <tr><td>{$函数标签$}</td></tr> 源代码网推荐 {$/BlockAlterPatch$} 源代码网推荐 {$/loop$} 源代码网推荐 如果只有交替补充行标签对没有默认补充行标签对那么交替补充行标签对将自动转换为 源代码网推荐 默认循环行标签对 源代码网推荐 源代码网推荐 源代码网推荐 源代码网推荐 ************************************************************************** 源代码网推荐 源代码网推荐 loop参数说明: 源代码网推荐 {$loop(3,0,alter)$} 源代码网推荐 loop上一共有三个参数,可适当减少 源代码网推荐 第一个参数: 源代码网推荐 3:循环3次 ,没有表示循环全部 源代码网推荐 第二个参数: 源代码网推荐 2:从2开始,没有表示从0开始 源代码网推荐 第三个参数: 源代码网推荐 alter:交替 源代码网推荐 noalter:不交替 ,没有表示默认为交替,所以alter加不加是一样的 源代码网推荐 如果三个参数全不写,至少要保留一对空括号 {$loop()$} 源代码网推荐 表示循环Datatable内的行数 源代码网推荐 从0行开始,有补充就显示补充。 源代码网推荐 ************************************************************************* 源代码网推荐 源代码网推荐 有更新了一下。主要是优化循环。 源代码网推荐 现在循环5万行的表格要 300-400 毫秒。 源代码网推荐 源代码网推荐 源代码网推荐 *************************************************************************** 源代码网推荐 建议模板不要大于85k,小心成为大尺寸对象。那可是二代对象 源代码网推荐 建议页面模板小于等于919个,对应函数标签建议不超过1597个。 源代码网推荐 很高兴看见模板类和我自己的认识一起成长。 源代码网推荐 源代码网推荐 ***************************************************************************** 源代码网推荐 源代码网推荐 源代码网推荐 源代码网推荐 做人要厚道,请注明转自酷网动力(www.ASPCOOL.COM)。 源代码网推荐 源代码网供稿. |
