当前位置: 移动技术网 > IT编程>开发语言>.net > ASP.net(c#) 生成html的几种解决方案[思路]第1/2页

ASP.net(c#) 生成html的几种解决方案[思路]第1/2页

2017年12月12日  | 移动技术网IT编程  | 我要评论

福建高速,尼日利亚爆炸袭击,河北正定中学网站

方案1: 
复制代码 代码如下:

/// <summary >
/// 传入url返回网页的html代码
/// </summary >
/// <param name="url" >url </param >
/// <returns > </returns >
public static string geturltohtml(string url)
{
errormsg = "";
try
{
system.net.webrequest wreq = system.net.webrequest.create(url);
// get the response instance.
system.net.webresponse wresp =wreq.getresponse();
// read an http-specific property
//if (wresp.gettype() ==httpwebresponse)
//{
//datetime updated =((system.net.httpwebresponse)wresp).lastmodified;
//}
// get the response stream.
system.io.stream respstream = wresp.getresponsestream();
// dim reader as streamreader = new streamreader(respstream)
system.io.streamreader reader = new system.io.streamreader(respstream, system.text.encoding.getencoding("gb2312"));
return reader.readtoend();
}
catch(system.exception ex)
{
errormsg = ex.message ;
}
return "";
}

你可以用这个函数获取网页的客户端的html代码,然后保存到.html文件里就可以了。
方案2:
生成单个的静态页面不是难点,难的是各个静态页面间的关联和链接如何保持完整;特别是在页面频繁更新、修改、或删除的情况下; 像阿里巴巴的页面也全部是html的,估计用的是地址映射的功能
关于地址映射可参考:http://www.easewe.com/article/showarticle.aspx?article=131
可以看看这个页面,分析一下他的“竞价倒计时”功能
http://info.china.alibaba.com/news/subject/v1-s5011580.html?head=top4&bidding=home5
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 >
biaoti
<br >
content <br >
author
</body >
</html >

提示添加成功后会出以当前时间为文件名的html文件!上面只是把传递过来的几个参数直接写入了html文件中,在实际应用中需要先添加数据库,然后再写入html文件
方案3:
给一个客户端参考的例子(sj)
它的作用在于以客户端的方式获取某个页面的代码,然后可以做为其他用途,本例是直接输出
复制代码 代码如下:

<script >
var oxmlhttp = new activexobject("microsoft.xmlhttp");
oxmlhttp.open("get","http://www.xrss.cn", false);
oxmlhttp.send()
var ostream = new activexobject("adodb.stream");
if(ostream == null)
alert("您的机器不支持adodb.stream.")
else
{
ostream.type=1;
ostream.mode=3;
ostream.open() ;
ostream.write(oxmlhttp.responsebody);
ostream.position= 0;
ostream.type= 2;
ostream.charset="gb2312";
var result= ostream.readtext();
ostream.close();
ostream = null;
var aa = window.open("","")
document.write(result);
aa.document.write(result);
}
</script >

1

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网