网站首页和文章板块生成静态页面(C#)
发布网友
发布时间:2022-05-08 16:47
我来回答
共3个回答
热心网友
时间:2022-04-22 09:14
1.生成问题。两种思路,一种,发布文章或者修改文章后调用生成HTML的方法,直接生成。第二种,数据库放一字段标示出未生成HTML的文章,如设置字段:ISHTML,当你修改文章后,自动把ISHTML初始化为0,代表未生成。在发布页,点发布的时候,重新生成HTML.
2.评论问题。可采用IFRAME嵌套评论页面的方法,或者用AJAX异步调用。推荐IFRAME,有利于搜索。
3.常用的生成静态的方法。一,模板替换法,如:模板里设置[title]、[content],在读取数据库的时候,自动替换为:文章标题和内容。二,读取页面内容生成法。即用程序读取动态页,获取HTML后,生成页面文件。可采用的手段,XMLHTTP,WEBCLIENT,WEBREQUEST等。
参考资料:07691.com
热心网友
时间:2022-04-22 10:32
生成静态页,使用模板替换
数据库存储静态页面物理路径,
数据库加一列存储文章内容(比如列名:NewContent),在修改时候获取NewContent字段(也就是文章内容)。在修改时,从新生成静态页(按原静态页路径替换),修改数据库中NewContent字段内容。
评论最好是用IFRAME实现。
这是大概思路
生成静态代码如下:
protected void Button1_Click1(object sender, EventArgs e)
{
string strDate = DateTime.Now.ToString("yyMMdd") + "/" + DateTime.Now.ToString("yyyymmddhhmmss");
string strFileName = strDate + ".html";//存储到数据库中
string strTitle = Request.Form["Title"].ToString().Trim();//接收传过来的标题
string strContent = this.Content.Text.ToString().Trim();//接收传过来的内容
string[] content = strContent.Split(new Char[] { '|' });//对内容进行拆分,并保存到数组
int upbound = content.Length;//数组的上限
SqlHelper db = new SqlHelper();
int success = db.ExecuteNonQuery("insert into SiteDynamic(dynamicTitle,titleCss,dynamicContent,addDate,readCount,FilePath)values('" + strTitle + "','color:Black;','" + strContent + "','" + DateTime.Now.ToString() + "',0,'" + strFileName + "')");
//if (success)
// Message.Text = "添加成功!";
/**/
///////////////////////////创建当前日期的文件夹开始
string dir = Server.MapPath("../news/" + "NewsFiles/" + DateTime.Now.ToString("yyMMdd"));//用来生成文件夹
if (!Directory.Exists(dir))
{
Directory.CreateDirectory(dir);
}
/**/
///////////////////////////创建当前日期的文件夹结束
try
{
for (int i = 0; i < content.Length; i++)
{
//string[] newContent = new string[4];//定义和html标记数目一致的数组
StringBuilder strhtml = new StringBuilder();
//创建StreamReader对象
//NewsFiles为目录。template.html为要替换的模板
using (StreamReader sr = new StreamReader(Server.MapPath("../" + "NewsFiles/") + "template.html", Encoding.GetEncoding("gb2312")))
{
String oneline;
//读取指定的HTML文件模板
while ((oneline = sr.ReadLine()) != null)
{
strhtml.Append(oneline);
}
sr.Close();
}
//为标记数组赋值
//SqlServerDataBase db = new SqlServerDataBase();
//DataSet ds = db.ExecuteDataSet("select top 1 dynamicID from SiteDynamic order by dynamicID desc");//获取id
//string strTable = " <table> <tr> <td>upUrl </td> <td>Number </td> <td>downUrl </td> </tr> </table>";//上下页表格,注意此处的upUrl(上一页),Number(页码分页),downUrl(下一页)
////这三个是用来替换的。
string FilePath = "";
strhtml = strhtml.Replace("Title", strTitle);
strhtml = strhtml.Replace("Time", DateTime.Now.ToString("yyyy/MM/dd"));
strhtml = strhtml.Replace("Content1", strContent);
if (upbound > 0)//如果没有分页,就直接按日期时间保存
{
FilePath = Server.MapPath("../news/") + "NewsFiles" + "//" + strDate + ".html";
strhtml = strhtml.Replace("Pager", "");
}
//创建文件信息对象--------------------------------------------
FileInfo finfo = new FileInfo(FilePath);
//以打开或者写入的形式创建文件流
using (FileStream fs = finfo.OpenWrite())
{
//根据上面创建的文件流创建写数据流
StreamWriter sw = new StreamWriter(fs, System.Text.Encoding.Default);
//把新的内容写到创建的HTML页面中
sw.WriteLine(strhtml);
sw.Flush();
sw.Close();
}
}
}
catch (Exception err)
{
//输出异常信息
Response.Write(err.ToString());
}
}
模板页面:
<table width="100%">
<tr>
<td colspan="2" style="height: 40px; text-align: center">
<span style="font-size: 14pt">
<span class="style1" style="font-size: 14pt"><strong>
Title</strong></span> </span>
</td>
</tr>
<tr>
<td colspan="2" style="height: 35px; text-align: center"><span class="style1">
发布时间:Time
</span></td>
</tr>
</table>
<table width="100%">
<tr>
Content1
</tr>
</table>
</td>
</tr>
</table>
热心网友
时间:2022-04-22 12:07
ID=CheckID(Request.QueryString("ID")) '此处请求刚刚添加的ID
session("help")=int((10-1+1)*Rnd + 1)
server.ScriptTimeout=9999
function getHTTPPage(url)
dim Http
set Http=server.createobject("MSXML2.XMLHTTP")
Http.open "GET",url,false
Http.send()
if Http.readystate<>4 then
exit function
end if
getHTTPPage=bytesToBSTR(Http.responseBody,"GB2312")
set http=nothing
if err.number<>0 then err.Clear
end function
''''''''''''''''''''''''''''''''''
Function BytesToBstr(body,Cset)
dim objstream
set objstream = Server.CreateObject("adodb.stream")
objstream.Type = 1
objstream.Mode =3
objstream.Open
objstream.Write body
objstream.Position = 0
objstream.Type = 2
objstream.Charset = Cset
BytesToBstr = objstream.ReadText
objstream.Close
set objstream = nothing
End Function
'''''''''''''''''''此处是要生成的静态页的地址''''''''''''''''''''''''''''''''''''''''''
txtURL="http://www.51wisdom.com.cn/news_con.asp?id="&id
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
sText = getHTTPPage(txtURL)
Set FileObject=Server.CreateObject("Scripting.FileSystemObject")
filename=server.MapPath("/")&"/html/"&id&".html"
Set openFile=FileObject.OpenTextfile(filename,2,true) 'true为不存在自行建立
openFile.writeline(sText)
Set OpenFile=nothing
function checksql(kustr)
checksql=server.htmlencode(replace(replace(replace(kustr,"<>"," "),"* from "," "),"="," "))
end function
response.Write("<script language=javascript>alert('信息发布成功!');window.location.href='list.asp';</script>")
参考资料:http://www.51weidi.com/html/1534.html#qq774665