现在是想根据HTML模板填充数据生成HTML静态页面。但现在写的方法很不灵活是在C#代码中拼接的HMTL标记。求好的实现方法。 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
    <title> <!--PageTitile--> </title> 
</head> 
<body> 
<!--Header--> 
<!--HotInfo--> 
<h1> <!--Call-Board--> </h1> 
<!--Footer--> 
</body> 
</html> 现在这个就是我的模板例子。我给他都读出来,然后替换字符串。一个一个得循环,假如遇见 <!--HotInfo-->了。我就是了,这里需要插入热门信息。我就后台拼接标记和数据用Table的字符串替换,连接样式都拼接好。但以后我要生成第二套网站了,数据都一样。只是HotInfo不用想这种Table样式了。我就很难办了,我就要该代码了。 
希望大家帮忙。。 看看了xslt+xml的模式但看的比较晕。还是希望能用C#的方式解决。希望通用一点,不用我每次都要去拼接 
感谢
把一个页面变成静态的是很容易,但我想解决的不是这个问题。。 我现在的网站用的架构松散耦合比较好了。所需要的数据在BLL了一调用就OK了。现在要扩展出好多静态页面来。我不去写aspx页面了。然后美工定义出N多套模板了。真的有N多套模板。所谓模板就是纯HTML页面。在需要数据的地方预留出特殊标记。我从后台服务中去替换。 现在我是不能把HTML和后台数据很好的分离开。 比如一个地方需要一段数据 <Table> 然后我就后台拼接    sb.Append(" <td>" + PerformDate + "-" + PerformEndDate + " </td>"); 类似这样的。假如说到第二套模板了,不用Table显示了。或样式变了,我就没办法了。还需要重新拼写。 很不爽 N套 N套我只求尽量的能把HTML标签和C#代码分离开。。要想再后台去拼接HTML标签了

解决方案 »

  1.   


    在html模板中定义好自己的关键字,当然要与html自己的标签有区别,然后用正则匹配替换自己的关键字,
    Example:
    <[M]>
    <h1> <[v]></[v]> </h1> 
    </[M]>
    假定M是循环替换的,v表示多值,那替换以后的结果就是
    <h1> 1</h1> 
    <h1> 2</h1> 
    <h1> 3</h1>......
    你替换的东西只和你的数据有关,你的关键字只和数据关联,关键字嵌套的是什么你不用关系你说的HotInfo之类全部可以这样实现,定义成模板。你只负责读取数据,根据关键字替换模板
      

  2.   

    cnblogs上有人写了一篇 供生成静态页核心代码 的文章,就在几天前,楼主可以去看看是不是你要的。
      

  3.   

    写函数替换html标识看看iwms中模板
    或用过伪静态实现静态页面
    server.EXECUTE
      

  4.   

    将相对固定的htm写成一个一个的字符串然后拼接出来
    例如
     public static readonly string htmlb = "<html>.....";
     public static readonly string htmlE = ".....</html>";
     StringBuilder sb = StringBuilber();
     sb.append(htmlb)
     sb.append(内容)
     sb.append(其他格式)
     ......
     sb.append(htmae)
    reutrn sb.tostring()