当前位置:中国站长下载文章中心网页编程.NET编程 → asp.net1.1 开发专用模板类(1)

asp.net1.1 开发专用模板类(1)

减小字体 增大字体 作者:不详  来源:不详  发布时间:2006-8-14 8:37:09
     做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 
  
  
    做人要厚道,请注明转自chinazhan中国站长(www.ChinaZhan.com)。