2000字范文,分享全网优秀范文,学习好帮手!
2000字范文 > 关于HTML静态页面(含自动分页)生成的可行性方案

关于HTML静态页面(含自动分页)生成的可行性方案

时间:2023-12-12 19:53:42

相关推荐

关于HTML静态页面(含自动分页)生成的可行性方案

首先基础的命名空间别忘记,下面是所要用到的几个命名空间 c# 代码 usingSystem.IO; usingSystem.Text; ; 接下来要设定附件上传的位置设定了

c# 代码 //文章默认存放的绝对路径 privatestringFilePageDir=System.Web.HttpContext.Current.Server.MapPath(ConfigurationManager.AppSettings["NewsFiles"]); 下面是生成文件的主体了,主要是生成时候的内容以及分割几块

c# 代码 #region生成批量新闻数据 ///<summary> ///生成批量新闻数据 ///</summary> ///<paramname="getData"></param> publicvoidFilePageForCreate(HashtablegetData) { stringstrDate=getData["pStrDate"].ToString();//目录 stringstrFileName=getData["pStaticPageName"].ToString();//目录及文件名 stringstrTitle=getData["pTitle"].ToString();//标题 stringstrContent=getData["pContent"].ToString();//内容 stringstrNewsSortID=getData["pNewsSortID"].ToString();//分类ID stringstrCreateTime=getData["pCreateTime"].ToString();//创建时间 stringstrCreateUserName=getData["pCreateUserName"].ToString();//发布人 stringstrNewsFrom=getData["pNewsFrom"].ToString();//来源 stringstrLink=getData["pLink"].ToString();//链接 stringstrCreateUserID=getData["pCreateUserID"].ToString();//创建人ID stringstrAssistantTitle=getData["pAssistantTitle"].ToString();//副标题 stringstrHit=getData["pHit"].ToString();//点击数量 stringstrKeyword=getData["pKeyword"].ToString();//关键字 stringstrNewsID=getData["pNewsID"].ToString();//新闻ID stringstrHtmlHeader=getData["pHtmlHeader"].ToString();//表头 stringstrNewsSortName=getData["pNewsSortName"].ToString();//分类名 strContent=strContent.Replace("$$分页$$","|"); string[]content=strContent.Split(newChar[]{|});//对内容进行拆分,并保存到数组 intupbound=content.Length;//数组的上限 ///创建当前日期的文件夹开始 stringdir=FilePageDir+DateTime.Now.ToString("yyMMdd");//用来生成文件夹 if(!Directory.Exists(dir)) { Directory.CreateDirectory(dir); } /**/ ///创建当前日期的文件夹结束 try { for(inti=0;i<content.Length;i++) { //string[]newContent=newstring[4];//定义和html标记数目一致的数组 StringBuilderstrhtml=GetFileCode(FilePageDir+"\\NewsDetailTemplate.html");//读取模板//为标记数组赋值 stringstrTable="<table><tr><tdstyle=\"font-size:12px\">$upUrl</td><tdstyle=\"font-size:14px\">$Number</td><tdstyle=\"font-size:12px\">$downUrl</td></tr></table>";//上下页表格,注意此处的$upUrl(上一页),$Number(页码分页),$downUrl(下一页) //这三个是用来替换的。 stringfilePath="";strhtml=strhtml.Replace("$NewsSortName",strNewsSortName); strhtml=strhtml.Replace("$HtmlHeader",strHtmlHeader); strhtml=strhtml.Replace("$NewsSortID",strNewsSortID); strhtml=strhtml.Replace("$CreateUserName",strCreateUserName); strhtml=strhtml.Replace("$NewsFrom",strNewsFrom); strhtml=strhtml.Replace("$Link",strLink); strhtml=strhtml.Replace("$CreateUserID",strCreateUserID); strhtml=strhtml.Replace("$AssistantTitle",strAssistantTitle); strhtml=strhtml.Replace("$Hit",strHit); strhtml=strhtml.Replace("$Keyword",strKeyword); strhtml=strhtml.Replace("$Title",strTitle); strhtml=strhtml.Replace("$NewsId",strNewsID); strhtml=strhtml.Replace("$CreateTime",DateTime.Now.ToString("yyyy/MM/dd")); strhtml=strhtml.Replace("$Content",content[i]); stringstrNumber="";//数字分页1,2,3…… for(intm=1;m<=upbound;m++) { if(m==1)//如果是第一页就显示成这个样子:0524.html而不是0524_1.html strNumber=strNumber+"["+"<ahref="+"../"+strDate+".html"+">"+m+"</a>"+"]"; else { intn=m-1;//第三页的连接应该是0524_2.html,以此类推 strNumber=strNumber+"["+"<ahref="+"../"+strDate+"_"+n+".html"+">"+m+"</a>"+"]"; } } if(upbound==0)//如果没有分页,就直接按日期时间保存 { filePath=FilePageDir+"//"+strDate+".html"; strhtml=strhtml.Replace("$Pager",""); } else//否则按0524.html、0524_1.html这种效果保存 { strNumber=strNumber.Replace(">"+(i+1)+"<","><u><b>"+(i+1)+"</b></u><"); if(i==0) filePath=FilePageDir+"//"+strDate+".html"; else filePath=FilePageDir+"//"+strDate+"_"+i+".html"; if(i==0)//第一页不显示上一页 strTable=strTable.Replace("$upUrl",""); if(i<=1)//上一页分页 strTable=strTable.Replace("$upUrl","<ahref="+"../"+strDate+".html"+">上一页</a>"); else { intp=i-1; strTable=strTable.Replace("$upUrl","<ahref="+"../"+strDate+"_"+p+".html"+">上一页</a>"); } if(upbound==1)//如果只有一页,则不显示页码 //strNumber=""; strTable=strTable.Replace("$Number",""); else strTable=strTable.Replace("$Number",strNumber);//页码替换 /**/ if(i==upbound-1)//最后一页不显示下一页 strTable=strTable.Replace("$downUrl",""); if(i!=upbound-1)//下一页分页 { intq=i+1; strTable=strTable.Replace("$downUrl","<ahref="+"../"+strDate+"_"+q+".html"+">下一页</a>"); } else { intj=upbound-1; strTable=strTable.Replace("$downUrl","<ahref="+"../"+strDate+"_"+j+".html"+">下一页</a>"); } strhtml=strhtml.Replace("$Pager",strTable); } RunFilesBuild(strhtml,filePath);//生成页面 } } catch(Exceptionex) { //输出异常信息 //Response.Write(err.ToString()); ITNB.Base.Error.showError(ex.Message.ToString()); } } #endregion

最后当然是文件输出的方法了,这个相对来说比较的简单点了,大陆通用的方法

c# 代码 #region生成文件 ///<summary> ///生成文件 ///</summary> ///<paramname="strhtml">数据内容</param> ///<paramname="filePath">路径</param> publicvoidRunFilesBuild(StringBuilderstrhtml,stringfilePath) { //创建文件信息对象-------------------------------------------- FileInfofinfo=newFileInfo(filePath); //以打开或者写入的形式创建文件流 using(FileStreamfs=finfo.OpenWrite()) { //根据上面创建的文件流创建写数据流 StreamWritersw=newStreamWriter(fs,System.Text.Encoding.Default); //把新的内容写到创建的HTML页面中 sw.WriteLine(strhtml); sw.Flush(); sw.Close(); } } #endregion

一点建议:

生成文件最好是SHTML的,当然这个前提是要服务器允许且支持SSI,至于如何做网上有很多的教程的,自己去搜索一下吧,来说说好处吧:

shtml和asp 有一些相似,以shtml命名的文件里,使用了ssi的一些指令,就像asp中的指令,你可以在SHTML文件中写入SSI指令,当客户端访问这些shtml文件时,服务器端会把这些SHTML文件进行读取和解释,把SHTML文件中包含的SSI指令解释出来

换句话说:就是可以使用一些类似ASP的特性的功能,例如文件包含,文件调用等!

目前,主要有以下几种用用途:

1、显示服务器端环境变量<#echo>

2、将文本内容直接插入到文档中<#include>

3、显示WEB文档相关信息<#flastmod #fsize> (如文件制作日期/大小等)

4、直接执行服务器上的各种程序<#exec>(如CGI或其他可执行程序)

5、设置SSI信息显示格式<#config>(如文件制作日期/大小显示方式) 高级SSI<XSSI>可设置变量使用if条件语句。

例子:<!--#include file="info.htm"-->

具体如何做,关于这方面的资料网上随便搜罗都一堆,就不详细说明了!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。