关于.net生成静态页面的方法总结

  这几天在做国家教育平台阳光工程,由于考虑到将来的用户群比较多,所以我们考虑使用.net生成静态页面的方法来减少数据与数据库的访问量,虽然以前也写过一些静态的页面,但是感觉没有将来的比较复杂,所以搜索了一下网络,再结合自己以前的一些经验,总结出以下几步思想:1)做一个比较好的模板temp1.html,并在模板中写好题目,内容,作者 以及发布日期的标记,如果还有其他列表的话也要写好其他列表
摘要由CSDN通过智能技术生成

 

 这几天在做国家教育平台阳光工程,由于考虑到将来的用户群比较多,所以我们考虑使用.net生成静态页面的方法来减少数据与数据库的访问量,虽然以前也写过一些静态的页面,但是感觉没有将来的比较复杂,所以搜索了一下网络,再结合自己以前的一些经验,总结出以下几步思想:

1)做一个比较好的模板temp1.html,并在模板中写好题目,内容,作者 以及发布日期的标记,如果还有其他列表的话也要写好其他列表的标记,如 题目可以用标记:$Title$,内容可以用$cont$,发布日期$PubDate,最新发布新闻列表$DtNewest$;

2)设计数据库,可以设置两张表,一张表存放模板,一张用于存放发布新闻的内容

如 模板表:  TempTable   : ID ,classid,TempPath(存放模板的路径);

    新闻表:   NesTable:   ID,ClassID,title,cont,Filepath(发布后存放静态页面的路径),pubdate,author,status;

 

3)添加新闻时,现在记录添加到新闻表中,然后再根据栏目的ID找到该栏目的模板,把模板中的内容读取到一个字符串变量中,并用新闻表中的字段替换模板中的相应标记,然后调用c#中的读写文件的类,写到一个静态文件中如:News.HTml,写成功后再更新数据中静态文件路径filepath;

 

这样一个静态文件就写好了

 

另外本人也从网络上搜集了一些资料,供大家参考(关于新闻内容分页的情况下次叙述)

一、类似的模板

 模板页Text.html代码

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
<HTML>
<HEAD>
<title>$ShowArticle$</title>
<body>
$title$

<br>

 $author$
<br>
$content$<br>

</body>
</HTML>

 

二、C#生成静态页类代码|支持列表生成代码

using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using zj123.Model;
using System.IO;
using System.Text.RegularExpressions;
using System.Runtime.InteropServices;
using System.Text;
using System.Collections;
namespace WebUI.html
{
    public class EasyHtml
    {
        public bool MakeHtml(string artid)
        {
           
            bool succ = false;
            int len = Convert.ToInt32(Convert.ToString(System.Configuration.ConfigurationManager.AppSettings["titlelength"]) ?? "20");
            //读取数据
            string sql = string.Format("select a.*,b.ClassName,b.Depth,b.OrderBy,b.isTop,b.isList,b.IsLinks,b.Links,b.PicURL,b.ParentID,b.TemplateoutId,b.TemplateinNeiId,b.TemplateinListId from article a,zone b  where a.classid=b.classid and a.Status=3 and a.articleid={0}", artid);
            DataTable dt = DbHelperOleDb.Query(sql).Tables[0];
            if(dt.Rows.Count>0)
            {
            //外模板
                string waitemp = "";
                DataTable waidt  =DbHelperOleDb.Query(string.Format("select * from template where TemplateID={0}",Convert.ToString(dt.Rows[0]["TemplateoutId"]).Trim())).Tables[0];
                if (waidt.Rows.Count > 0)
                {
                    waitemp = Convert.ToString(waidt.Rows[0]["TemplateContent"]);
                }
            //内模板
                string neitemp = "";
                DataTable neidt = DbHelperOleDb.Query(string.Format("select * from template where TemplateID={0}", Convert.ToString(dt.Rows[0]["TemplateinNeiId"]).Trim())).Tables[0];
                if (neidt.Rows.Count > 0)
                {
                    neitemp = Convert.ToString(neidt.Rows[0]["TemplateContent"]);
                }
                //替换模板
                waitemp = waitemp.Replace("$intemplate$", neitemp);
                //替换类型
                string tempclassname = classes.Common.GetP(Convert.ToString(dt.Rows[0]["classid"]));
                waitemp = waitemp.Replace("$ClassName$", tempclassname);
            #region "文章列表"
  
                //最新的文章
                System.Text.StringBuilder sbneartitle = new System.Text.StringBuilder("<div align=/"left/">");
                DataTable nearTitledt = DbHelperOleDb.Query("select top 10 case when len(title)>" + len + " then substring(title,1," + len + ") else title end as Title,HtmlPath from article where iscreate=1 order by updatetime desc").Tables[0];
                for (int i = 0; i < nearTitledt.Rows.Count; i++)
                {
                    sbneartitle.AppendFormat("<li><a href=/"{0}/">{1}</a></li>",Convert.ToString(nearTitledt.Rows[i]["HtmlPath"]),Convert.ToString(nearTitledt.Rows[i]["Title"]));
                }
                sbneartitle.Append("</ol></div>");
                waitemp = waitemp.Replace("$NearTitle$", sbneartitle.ToString());
                sbneartitle.Remove(0,sbneartitle.ToString().Length);
                if (waitemp.Contains("$OnTopTitle$"))
                {
                    sbneartitle.Append("<div align=/"left/">");

                    //固定
                    nearTitledt = DbHelperOleDb.Query("select top 10 case when len(title)>" + len + " then substring(title,1," + len + ") else title end as Title,HtmlPath from article where iscreate=1 and OnTop=1 order by updatetime desc").Tables[0];
                    for (int i = 0; i < nearTitledt.Rows.Count; i++)
                    {
                    sbneartitle.AppendFormat("<li><a href=/"{0}/">{1}</a></li>", Convert.ToString(nearTitledt.Rows[i]["HtmlPath"]), Convert.ToString(nearTitledt.Rows[i]["Title"]));
                    }
                    sbneartitle.Remove(0, sbneartitle.ToString().Length);
                    sbneartitle.Append("</ol></div>");
                    waitemp = waitemp.Replace("$OnTopTitle$", sbneartitle.ToString());
                    sbneartitle.Remove(0, sbneartitle.ToString().Length);
                }
             
                if (waitemp.Contains("$HitsTitle$"))
       

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值