闲来无事,其他的人都在忙着迎新生,正好要用到生成静态页的东西,于是开始搜索,但是一直没有找到我自己想要的合适的东西,比如我要有自己的文件夹,可以根据自己的需要放进去,我要生成按年/月/日分开的静态页完整的RL举个例子来说就是:
http://www.***.com/news/sport/20070908/1_1.html
其中呢像news/sport/20070908 都是动态生成的!并且要求生成出来的静态页要能够自己分页!
有了这个需求,下面大概介绍一下我的思路,首先就是你的服务器要有fso权限,那么你就可以生成文件夹了!生成的文件夹呢就是你存放html文件的path,那么我们还需要定义html文件的名称如1_1.html,其中第一个1是新闻的id,第二个1呢就是页码,生成静态页的思想呢用到的就是标签替换的思想!当然我这里没有实现按照时间段批量生成,不过考虑到这才是第一个版本,以后还会陆续添加,来看看图片吧!
这个呢是大概的样子,其中所在文件夹一定要这样定义如:news/sport/ 千万不要丢掉最后一个“/”。系统会根据你定义的字数自动的读取数据库中的内容来决定一共要分几页。 你可以定义分页连接的样式,还可以定义分页打开的目标,默认呢是在新的一个打开。
这就是生成的样子啦!看title 还有地址栏的地址。
好了下面来看看大概的代码:
主要有两个方法 分别为 creatfile() 和creathtml() 看方法名就知道 他们是创建文件夹和创建html的!
... {
// 以下为获取用户数据 可自定义
SqlConnection conn = new SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["strConn"].ToString());
string Sql = "select * from testt";
SqlDataAdapter dr= new SqlDataAdapter(Sql,conn);
DataSet mydata = new DataSet();
dr.Fill(mydata);
string title = mydata.Tables[0].Rows[0]["title"].ToString();
string content = mydata.Tables[0].Rows[0]["newscontent"].ToString();
// 定义分页所需变量
int contentLen = content.Length; // 获取文章总字数
int pageCount = 0; // 定义总页数
int pageLen = int.Parse(this.txtFontLen.Text.ToString()); // 获取用户自定义每页要显示的字数
string pageCurrent = ""; // 定义当前页码
int currentLen = 0; //定义当前所在的字节位
// 文章字数和每页字数做余,判断要分的页数。
if(contentLen%pageLen == 0)
...{
pageCount = contentLen/pageLen;
}
else
...{
// 如果不是正好为零需要增加一页
pageCount = (contentLen/pageLen) + 1;
}
由于暂时不想开源!不过你可以通过反编译拿到代码!呵呵!我没有混淆
... {
this.filePath = this.txtFile.Text.ToString().Trim();
// 获取用户输入的文件夹的层次
string[] fileClass = filePath.Split('/');
int i = fileClass.Length; //计算文件夹的层次
int j = 0;
string pathO = ""; //定义最终的路径
while(j<i)
...{
if(j == 0) // 一定要区分0和非零的数据
...{
pathO = fileClass[j].ToString();
}
string pathF = Server.MapPath(pathO);
// 创建文件夹
if(!System.IO.Directory.Exists(pathF))
...{
try
...{
System.IO.Directory.CreateDirectory(pathF);
}
catch(Exception ex)
...{
Response.Write(ex.Message);
}
}
if(j<i-1) // 因为pathO在 j = (i-1) 时还会再次计算 会导致数组越界 所以区分j。
...{
pathO = pathO + "/" +fileClass[j+1].ToString();
}
else if(j == (i-1))
...{
pathO = pathO+"/"+ fileClass[j].ToString();
}
j++;
}
// 根据用户输入的文件夹生成文件夹在这里只是给大家一个思路!具体的你可以自己写 我并没有贴出核心的代码!
html模板页的代码!
< html xmlns ="http://www.w3.org/1999/xhtml" >
< head >
< meta http-equiv ="Content-Type" content ="text/html; charset=gb2312" />
< title > $title </ title >
< link rel ="stylesheet" rev ="stylesheet" href ="../CSS/Main.css" type ="text/css" />
</ head >
< body >
< div style ="margin:0px auto; text-align:center; padding:2px;width:80%; border:1px solid #d7d7d7;" >
< div style =" text-align:center; float:left; width:100%; margin:0px 0px 10px 0px;" >
< span class ="fs13 isbold cblack" > $title </ span >
< br />
< hr style ="text-align:center; size:1px;" />
</ div >
< div style =" text-align:left; float:left; width:100%; margin:0px 0px 10px 0px;" >
< span class ="fs12" style ="line-height:20px;" > $content </ span >
</ div >
< div style =" margin:0px auto; text-align:center; width:98%; border:1px solid #d7d7d7; background-color:#ececec; height:20px;" >
< span class ="fs12" > $page </ span >
</ div >
</ div >
</ body >
</ html >
现在csdn上传有错误 我不能上传 想要的留个邮箱吧!
希望高手帮我指正!