观自在书院

海纳百川有容则大 壁立千仞无欲则刚

博客园 首页 新随笔 联系 订阅 管理
  13 Posts :: 32 Stories :: 144 Comments :: 6 Trackbacks

环境:Microsoft .NET Framework SDK v1.1
OS:Windows Server 2003 中文版
ASP.Net生成静态HTML页
在Asp中实现的生成静态页用到的FileSystemObject对象!
在.Net中涉及此类操作的是System.IO
以下是程序代码 注:此代码非原创!参考别人代码
//生成HTML页
  public static bool WriteFile(string strText,string strContent,string strAuthor)
  {
   string path = HttpContext.Current.Server.MapPath("/news/");
   Encoding code = Encoding.GetEncoding("gb2312");
   // 读取模板文件
   string temp = HttpContext.Current.Server.MapPath("/news/text.html");
   StreamReader sr=null;
   StreamWriter sw=null;
   string str="";  
   try
   {
    sr = new StreamReader(temp, code);
    str = sr.ReadToEnd(); // 读取文件
   }
   catch(Exception exp)
   {
    HttpContext.Current.Response.Write(exp.Message);
    HttpContext.Current.Response.End();
    sr.Close();
   }
  
   
   string htmlfilename=DateTime.Now.ToString("yyyyMMddHHmmss")+".html";
   // 替换内容
   // 这时,模板文件已经读入到名称为str的变量中了
   str =str.Replace("ShowArticle",strText); //模板页中的ShowArticle
   str = str.Replace("biaoti",strText);
   str = str.Replace("content",strContent);
   str = str.Replace("author",strAuthor);
   // 写文件
   try
   {
    sw = new StreamWriter(path + htmlfilename , false, code);
    sw.Write(str);
    sw.Flush();
   }
   catch(Exception ex)
   {
    HttpContext.Current.Response.Write(ex.Message);
    HttpContext.Current.Response.End();
   }
   finally
   {
    sw.Close();
   }
   return true;

此函数放在Conn.CS基类中了
在添加新闻的代码中引用 注:工程名为Hover
 
    if(Hover.Conn.WriteFilethis.Title.Text.ToString),this.Content.Text.ToString),this.Author.Text.ToString)))
    {
     Response.Write("添加成功");
    }
    else
    {
     Response.Write("生成HTML出错!");
    }
-------------------------------------------------------------------------
模板页Text.html代码
-------------------------------------------------------------------------
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
<HTML>
 <HEAD>
  <title>ShowArticle</title>
  
 <body>

 biaoti
 <br>
 content<br>
 author
 </body>
</HTML>


------------------------------------------------------------------------
提示添加成功后会出以当前时间为文件名的html文件!上面只是把传递过来的几个参数直接写入了HTML文件中,在实际应用中需要先添加数据库,然后再写入HTML文件
而且需要把生成的文件名等写入数库以便以后调用等,此实例只是实现了根据提交过来参数替换模板中的相应的字段! 需要完善的地方很多!哪位有高见,欢迎赐教!

posted on 2004-03-23 15:39 观自在书院 阅读(20049) 评论(95)  编辑 收藏 网摘 所属分类: DOTNET

Feedback

#1楼 2004-05-17 09:37 Kriss[未注册用户]
用HTML作为模板,替换其中变量只能实现一些简单页面
有没有办法把我的ASPX文件的运行结果产生HTML呢?
譬如我的首页,内容很复杂,用ASPX写的
但由于用户很多,为了提高速度,我每次更新数据后,重新产生首页的HTML,但模板是ASPX文件

  回复  引用    

#2楼 2004-05-18 18:03 槛上人
这个效果用缓存可以实现的,比如你将页面整体缓存3分种,和静态页面差不多了
  回复  引用    

#3楼 2004-06-01 13:36 Kriss[未注册用户]
我找到我想用的方法了:
using System.Web.Hosting;

WebHost host = (WebHost)ApplicationHost.CreateApplicationHost(
typeof(WebHost), name, path);

public void DoRequest(string page, string query, TextWriter writer) {
HttpRuntime.ProcessRequest(new SimpleWorkerRequest(page, query, writer));
}

这样我就可以直接把一个ASPX文件产生HTML文件了
FileStream fs = File.Open("Default.htm");
host.DoRequest("Default.aspx",string.Empty,fs);

  回复  引用    

#4楼 2005-08-04 12:47 DMPx[未注册用户]
能否提供完整的源代码?
czb_80@163.com

  回复  引用    

#5楼 2005-10-08 18:04 old_D[未注册用户]
FileStream -----> TextWriter

错误!

  回复  引用    

怎么错了??
  回复  引用    

#7楼 2006-03-02 18:34 青山[未注册用户]
将单页复杂的.aspx页面生成静态HTML文件,能给我源码吗,小弟先行谢过!
我的邮箱是:lgnet@126.com

  回复  引用    

@Kriss
这位兄台能能不能装代码发到的我邮箱
先谢了!

  回复  引用    

我和邮箱:wuxiaobo0204@hotmail.com
  回复  引用    

晕,又打错字了! 不好意思
  回复  引用    

#11楼 2006-04-01 14:05 winter[未注册用户]
编译没错误,出来一个空白IE页,HTML里的内容也没改,怎么回事啊?
  回复  引用    

#12楼 2006-04-01 14:06 zoe[未注册用户]
if(Hover.Conn.WriteFilethis.Title.Text.ToString),this.Content.Text.ToString),this.Author.Text.ToString)))
{
Response.Write("添加成功");
}
else
{
Response.Write("生成HTML出错!");
}

编译出错,

  回复  引用    

#13楼 2006-04-01 14:13 aa[未注册用户]
就出空白页,愁死了。
  回复  引用    

#14楼 2006-04-05 11:16 事实[未注册用户]
生成静态不光是速度问题啊!大多数搜索引擎都不支持带参数的页面的,一般搜索引擎只搜索表面文件!如果ASPX里使用了参数,就算你有几万个产品,可能只会被收录一小部分!
  回复  引用    

#15楼 2006-04-12 09:15 cha[未注册用户]
能给我生成静态页面的源码吗? 怎样在连接时显示html页面?
我的邮箱:cha002@mail.china.com

  回复  引用    

将单页复杂的.aspx页面生成静态HTML文件,能给我源码吗,小弟先行谢过!
我的邮箱是:liangshengming0913@163.com

  回复  引用    

#17楼 2006-04-17 13:13 jiuwo[未注册用户]
能给我一份吗?小弟先谢过了!!!
我的邮箱:do11111@163.com

  回复  引用    

#18楼 2006-04-25 13:22 冷静[未注册用户]
那怎么 样才能多生循环的生成模版中的内容呢

我的邮箱:joe_andnie@163.com

  回复  引用    

#19楼 2006-05-04 14:33 冷静[未注册用户]
静态面不当能生成当个页面的信息。
它还可以循环生成页面内容。。
功能可大呢。。

  回复  引用    

#20楼 2006-05-22 09:18 fangyc[未注册用户]
能给我一份吗?小弟先谢过了!!!
我的邮箱: f_redsun@126.com

  回复  引用    

#21楼 2006-05-23 16:01 lcmking[未注册用户]
能给一份原代码吗?这里先行谢谢啦。。。
  回复  引用    

#22楼 2006-05-23 16:02 lcmking[未注册用户]
能给一份原代码吗?这里先行谢谢啦。。。
我的邮箱:li.chunming@163.com

  回复  引用    

如果有把程序自动生成的aspx页面转化为htm/html页面,请给我一份
coolfishsz@yahoo.com.cn

  回复  引用    

#24楼 2006-06-06 11:54 qhn[未注册用户]
你能把代码说得更清楚点吗,比如说你的代码命名空间和它的代码位置详细说清楚,我是菜鸟有很多东西不懂的,现响各位讨教了.@Kriss

  回复  引用    

提示找不到HTML文件 无法读取 只要ASP。NET一读test.html 这个文件就不存在了 在WINDOWS里能看到 但是在DOS无法列出 ASP。NET程序报告错误
找不到这个TEST。HTML文件

  回复  引用    

#26楼 2006-07-14 17:27 EEE[未注册用户]
if(Hover.Conn.WriteFilethis.Title.Text.ToString),this.Content.Text.ToString),this.Author.Text.ToString)))
{
Response.Write("添加成功");
}
else
{
Response.Write("生成HTML出错!");
}
-------------------应该这么写------------------------------
if(Hover.Conn.WriteFile(this.Title.Text.ToString,this.Content.Text.ToString,this.Author.Text.ToString))
{
Response.Write("添加成功");
}
else
{
Response.Write("生成HTML出错!");
}

  回复  引用    

#27楼 2006-07-18 16:24 葳蕤[未注册用户]
能给我一份自动生成HTML文件的代码吗??小弟真的现在在急用啊,在线等待啊,希望大哥能大发慈悲啊,难道我的眼中真的就不再有期待了吗??
谢谢!!麻烦大哥了啊,我的邮箱是:wudan_0110@sina.com

  回复  引用    

#28楼 2006-07-21 16:42 wwpewr[未注册用户]
异常:
Access to the path 'c:\inetpub\wwwroot\StaticPage\news\20060721162952.html' is denied

新文件创建不了

  回复  引用    

#29楼 2006-07-22 12:12 冷静[未注册用户]
@冷静
那要怎么实现,,,,用什么办法实现..我找了不久了..看了不少帮助,可没能有个说话.不可能, 是用那个.正则表达式吧.

  回复  引用    

#30楼 2006-08-03 15:23 天轰穿      
http://www.cnblogs.com/thcjp/">http://www.cnblogs.com/thcjp/

这里也转载了个

  回复  引用  查看    

#31楼 2006-08-08 14:45 sdf[未注册用户]
dfdf
  回复  引用    

#32楼 2006-08-12 18:08 李森[未注册用户]
如果有较完整的代码,请给我一份!我的信箱epyjvyp@163.com
谢谢~

  回复  引用    

如果有较完整的代码,也请发给我一份,我的信箱是wty.12@126.com
先在这里谢谢了阿

  回复  引用    

我想看你啊;

  回复  引用    

我想看你啊

  回复  引用    

#36楼 2006-08-24 13:29 sutar[未注册用户]
sutar1981@yahoo.com.cn
兄弟,顺便给岸也发一份,先谢了

  回复  引用    

Private Sub BuildIndex()
Me.EnableViewState = False
Dim strIndexFullName As String
strIndexFullName = Server.MapPath("/") & "index.html"
Try
Dim writer1 As StringWriter = New StringWriter(CultureInfo.InvariantCulture)
Dim writer2 As HtmlTextWriter = New HtmlTextWriter(writer1)

Me.RenderControl(writer2)
writer2.Flush()
writer2.Close()
Dim fs As FileStream = New FileStream(strIndexFullName, FileMode.Create)
'Dim sw As StreamWriter = New StreamWriter(fs, Encoding.GetEncoding("gb2312"))
Dim sw As StreamWriter = New StreamWriter(fs, Encoding.GetEncoding("UTF-8"))
sw.Write(writer1)
sw.Close()
fs.Close()
Catch ex As Exception
FormOperate.MessageBox(Me, "写文件出错!")
End Try
End Sub

  回复  引用    

#38楼 2006-09-05 10:06 cjx[未注册用户]
yc_cjx@126.com
谢谢

  回复  引用    

#39楼 2006-09-09 10:45 lsf[未注册用户]
public function html(tfile as string,sfile as string,hformat() as string ) as boolean
try
'判断模板页是否存在 和 是否为空字符串
if tfile.length<1 or sfile.length<1 then
return false
end if

if not File.exists(tfile) then
return false
end if

'读入模板页的所有内容
dim sr as new streamreader(tfile,System.Text.Encoding.GetEncoding("GB2312"))
dim fcontent as string
dim SB as New stringBuilder()
fcontent=sr.ReadToEnd()
SB.append(fcontent)
sr.close

'更换模板页的需要替换的地方
dim i as integer
for i=0 to hformat.length-1
SB.replace("$htmlformat[" & i & "]",hformat(i))
next

'先判断需要保存的路径文件夹是否存在,如不存在需先建立文件夹
dim str as string=sfile.substring(0,sfile.lastindexof("\"))
if not Directory.exists(str) then
Directory.CreateDirectory(str)
end if

'生成新文件,并覆盖原来的旧文件
dim fstream as FileStream
fstream=File.Open(sfile,FileMode.create,FileAccess.ReadWrite,FileShare.ReadWrite)

dim sw as new streamwriter(fstream,System.Text.Encoding.GetEncoding("GB2312"))
sw.writeline(SB.tostring)
sw.close
fstream.close
return true
catch
return false
end try
end function
这只是其中一种的方法,还有一种超酷方法直接把ASPX运行后的结果生成HTML,要的去我的博客吧

  回复  引用    

能给我一份吗?小弟先谢过了!!!
我的邮箱: jiameng2008@126.com
thank you !

  回复  引用    

#41楼 2006-10-01 20:56 kuuy[未注册用户]
不错,就是不错呀
  回复  引用    

小弟先行谢过,给我也发一份shanpeng2004@126.com
  回复  引用    

deng123@cass.org.cn 我也在这里先谢谢您!
我有好东东也会用邮件回复给您的!比如:论坛、博客和新闻系统的asp.net源码(带工程文件、带生成html页)等…
:)

  回复  引用    

#44楼 2006-11-17 11:44 raymond[未注册用户]
能给一份吗?谢谢
yxr.306789@163.com
在线等待

  回复  引用    

能给我一份源码吗?379991417@163.com
  回复  引用    

我也想要一份12966469@qq.com
  回复  引用    

能给份原代,谢谢
simmiyan@tom.com

  回复  引用    

1
  回复  引用    

#49楼 2007-01-09 09:59 l[未注册用户]
能不能也给俺一份,如何使自动生成的动态的页面,全部生成HTML?889966521@163.com
  回复  引用    

#50楼 2007-01-24 15:02 dotnet[未注册用户]
还有一点不是太清楚!"在实际应用中需要先添加数据库,然后再写入HTML文件
而且需要把生成的文件名等写入数库以便以后调用等".如果先把数据写入数据库了,那html文件名怎么存入数据库!生成页面后才会有文件名的。还是说数据放在一个数据库内,生成的静态页面再单独放一个数据库啊,这样会不会有些麻烦了!

  回复  引用    

能发一个给我研究下吗?
lu_xianfei@163.com
谢谢!

  回复  引用    

不错。研究下。
  回复  引用    

xht2005@126.com能给我一份“aspx页面生成静态HTML文件”的源码吗?研究下。谢谢!
  回复  引用    

#54楼 2007-03-26 08:44 salough[未注册用户]
真的会给份源码吗?
zj.yuanhui@126.com

  回复  引用    

#55楼 2007-03-26 16:42 PPLONY[未注册用户]
给份源码
dongdong314@yahoo.com.cn

  回复  引用    

#56楼 2007-04-22 15:35 sdisd[未注册用户]
给份源码
bingsueiliuhen2@163.com

  回复  引用    

#57楼 2007-04-22 15:49 newstar[未注册用户]
71697@qq.com


可以给一份吗

  回复  引用    

#58楼 2007-04-28 14:34 laron[未注册用户]
真的会给份源码吗?
laron@126.com

  回复  引用    

#59楼 2007-04-29 15:28 jingxin[未注册用户]
我也来一份 谢谢

cjh00758@gmail.com

  回复  引用    

#60楼 2007-06-25 18:01 菜鸟[未注册用户]
能给我一份源码吗,我也想要accpmycomputer@126.com

  回复  引用    

#61楼 2007-06-26 15:25 f[未注册用户]
fff
  回复  引用    

此页面就是吧!!

  回复  引用    

能给我一份“aspx页面生成静态HTML文件”的完整源码吗?研究下。谢谢!
我的邮箱是03-stonoil@163.com

  回复  引用    

大家都想要为什么不把源码粘贴出来,共享呢
  回复  引用    

能给我一份“aspx页面生成静态HTML文件”的完整源码吗?研究下。谢谢!

xiazhi33@163.com

  回复  引用    

能给我一份“aspx页面生成静态HTML文件”的完整源码吗?研究下。谢谢!

23494889@qq.com

  回复  引用    

#67楼 2007-11-14 23:46 星辉      
也给我一份啊
finejob@163.com

  回复  引用  查看    

#68楼 2007-11-27 12:45 muzi[未注册用户]
谁有完整的解决方案 给我来一份:zhangfuyun69@yeah.net
  回复  引用    

是否考虑用url重写呢
  回复  引用    

#70楼 2008-01-31 21:18 tide11[未注册用户]
能给我一份吗?小弟先谢过了!!!
我的邮箱:dian598@yahoo.cn

  回复  引用    

给小弟一份吧,急需!!!!
rqsj_001@163.com
严重感谢!!!

  回复  引用    

可以给我一份吗 ?我现在急需。我的Email: intenret_margic@163.com

谢谢!

  回复  引用    

能发给我一份吗 谢谢了!!!
我的邮箱:readfuture@163.com

  回复  引用    

#74楼 2008-06-30 11:37 鹏鹏_Lovely      
能给我一份吗?小弟先谢过了!!!
我的邮箱:dupeng0811@163.com

  回复  引用  查看    

#75楼 2008-06-30 11:37 鹏鹏_Lovely      
--引用--------------------------------------------------
鹏鹏_Lovely: 能给我一份吗?小弟先谢过了!!!
我的邮箱:dupeng0811@163.com

--------------------------------------------------------

  回复  引用  查看    

#76楼 2008-07-01 10:05 菜鸟1[未注册用户]
给给我一份吗?我也需要将“aspx页面生成静态HTML文件”的完整源码,谢谢。急需。我的邮箱是accpmycomputer@126.com
  回复  引用    

#77楼 2008-07-09 10:17 yellow[未注册用户]
也给我一份吧.谢谢了...: playhuangbo@163.com
  回复  引用    

能给我一份源码吗?小弟真的现在在急用啊,
谢谢啦!!!

  回复  引用    

能给我一份源码吗?小弟真的现在在急用啊,
guofeng_fu@163.com

谢谢啦!!!急急急急~~~~~~

  回复  引用    

#80楼 2008-08-18 13:46 李路平      
我也来一份,先谢谢啦~!
liluping860122@163.com

  回复  引用  查看    

传到网上行吗?好多人想要呢
  回复  引用    

#82楼 2008-08-27 19:43 啊曹[未注册用户]
有的话 发给我一份 谢谢先
caojinyan0415@126.com
谢谢先了~

  回复  引用    

谢谢分享

  回复  引用    

aspx页面生成静态HTML文件 大哥们能给一份 吗有用啊?谢谢啦
  回复  引用    

aspx页面生成静态HTML文件 大哥们 能给我一份吗 急用啊 谢谢啦
小弟 Email:zhu-xiao-zhong@163.com

  回复  引用    

#86楼 2009-01-19 02:41 蒋军[未注册用户]
我也很需要一份将.aspx转化为html的完整源码啊!jiangjunde1986@126.com谢谢,很急!谢谢!!
  回复  引用    

我也是急需一份这样的代码,希望楼主能发到邮箱里,太感谢了。先谢谢了。
  回复  引用    

我也是急需一份这样的代码,希望楼主能发到邮箱里,太感谢了。先谢谢了。
wfwshenshen@163.com

  回复  引用    

我也想要一份这样的代码,希望楼主成全,在此谢过~~~
zhuhaibo1986@163.com

  回复  引用    

#90楼 2009-03-11 09:09 qhpf298[未注册用户]
qhpf298@sina.com
能给我生成静态页面的源码吗?

  回复  引用    

#91楼 2009-03-17 18:37 如果[未注册用户]
@Kriss
电热管

  回复  引用    

#92楼 2009-04-03 12:20 aaaaa[未注册用户]
工程名为Hover
代码借用了。可没这工程名为Hover名。报错。。
645094721@qq.com 急呀。 谢谢

  回复  引用    

.net生成的静态.htm页面时这个“©”怎么读成了“?”了,怎么来解决它?有知道解决方法,劳架您告知一声,谢谢!
  回复  引用    

#94楼 2009-05-14 10:23 云淡风轻-.net      
有好的例子给窝个,531432425@qq.com

  回复  引用  查看    

gggggggggggg
  回复  引用    




发表评论

昵称: [登录] [注册]

主页:

邮箱:(仅博主可见)

评论内容:

  登录  注册

[使用Ctrl+Enter键快速提交评论]

0 3959




相关文章:

相关链接: