| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 775 人关注过本帖
标题:ASP.NET生成静态页面
只看楼主 加入收藏
chy710
Rank: 1
等 级:新手上路
帖 子:77
专家分:0
注 册:2006-2-24
收藏
 问题点数:0 回复次数:7 
ASP.NET生成静态页面

大家有没有做过这样的项目?具体如何实现?
比如新闻部分生成静态后,如2005-05-16/103600214.htm后,如以后要用到此新闻,比如对它评论,怎么知道他对应的ID?

搜索更多相关主题的帖子: NET ASP 静态 页面 
2006-06-12 09:33
rainic
Rank: 6Rank: 6
等 级:贵宾
威 望:27
帖 子:2367
专家分:0
注 册:2005-8-9
收藏
得分:0 
//生成靜態網頁
CreateHTMLFile chf = new CreateHTMLFile();
chf.read("../template/article_view.html");
chf.fill("{-page_title-}", art_title);
chf.fill("{-title-}", art_title);
chf.fill("{-author-}", author);
chf.fill("{-fromwhere-}", fromwhere);
chf.fill("{-datetime-}", DateTime.Now.ToString());
content = content.Replace("[pic]", "<img src=\"");
content = content.Replace("[/pic]", "\" />");
chf.fill("{-content-}", content);
string dirRealPath = Server.MapPath("../" + dirPath);
Directory.CreateDirectory(dirRealPath);
if (!chf.write("../" + dirPath + "/" + fileName))
msg("error.............");
msg("ok","article_admin.aspx?act=add");



//生成靜態網頁使用到的类
using System.IO;
using System.Text;
/// <summary>
/// CreateHTMLFile 的摘要说明
/// </summary>
public class CreateHTMLFile
{
string htmlCode;
Encoding code;
public CreateHTMLFile()
{
//
// TODO: 在此处添加构造函数逻辑
//
htmlCode = "";
code = Encoding.GetEncoding("gb2312");//HTML文件使用中文字符代码
}

public bool read(string templatePath)//读取模板的字符,并保存到htmlCode成员变量
{
try
{
templatePath = System.Web.HttpContext.Current.Server.MapPath(templatePath);//获取绝对路径
StreamReader sr = new StreamReader(templatePath, code);//创建StreamReader对象
htmlCode = sr.ReadToEnd();//读取全部字符,并保存到htmlCode成员变量
sr.Close();
return true;
}
catch(IOException)//捕捉IO异常
{
return false;
}
}

public void fill(string var, string content)//把内容替换模板中的“变量”
{
htmlCode = htmlCode.Replace(var, content);
}

public bool write(string outPath)//把HTML文件保存到磁盘
{
try
{
string fileRealPath = System.Web.HttpContext.Current.Server.MapPath(outPath);
StreamWriter sw = new StreamWriter(fileRealPath, false, code);
sw.Write(htmlCode);//把HTML文件写到磁盘上
sw.Flush();
sw.Close();
return true;
}
catch (IOException)//捕捉IO异常
{
return false;
}
}
}


2006-06-12 09:41
rainic
Rank: 6Rank: 6
等 级:贵宾
威 望:27
帖 子:2367
专家分:0
注 册:2005-8-9
收藏
得分:0 
哪不明白再问

2006-06-12 09:41
铲铲
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:34
帖 子:506
专家分:0
注 册:2006-5-2
收藏
得分:0 
这并不是最好的办法。静态页面一旦生成,在下一个生成周期内就不会再更新。另外静态页生成需要磁盘空间(虽然不多),还制约与文件系统中分配的权限,权限不够就无法生成。另外如果按照年月日分类建立目录,一年下来就要建立365个目录。

所以,可以考虑使用URL重写。在MSDN上,有一篇文章很详细地讨论了URL重写,网址:
http://www.microsoft.com/china/msdn/library/webservices/asp.net/URLRewriting.mspx

铲铲是也
2006-06-12 10:55
rainic
Rank: 6Rank: 6
等 级:贵宾
威 望:27
帖 子:2367
专家分:0
注 册:2005-8-9
收藏
得分:0 
生成html页,主要目的是为了要性能要速度,而不只是为了安全

2006-06-12 14:05
SmallKnight
Rank: 1
等 级:新手上路
帖 子:67
专家分:0
注 册:2006-4-29
收藏
得分:0 

非常同意这个说法!


小飞侠
2006-06-14 09:22
chy710
Rank: 1
等 级:新手上路
帖 子:77
专家分:0
注 册:2006-2-24
收藏
得分:0 
生成一个静态页面后,但我要对其进行数据操作,怎么得到,如是动态每条记录都有ID,但生成静态后如何去做?

2006-06-15 08:51
小笨笨
Rank: 5Rank: 5
等 级:贵宾
威 望:19
帖 子:1169
专家分:0
注 册:2006-4-17
收藏
得分:0 
静态的也有文件名啊,用文件名做为评论的ID就行了。

欢迎光临我的博客: http://smallfools.blog./default.html
2006-06-15 09:10
快速回复:ASP.NET生成静态页面
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.018403 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved