首先需要新建一个mk.aspx页面。用来生成html文件。
大致版面就这样。
前面代码基本就是ul,button,label这些控件组成。具体代码就不贴了。主要是C#代码
需要引用 命名空间:using System.IO;
StreamWriter sw;
public string pathName = "";
public string UrlName = "";
Label lbl;
/// <summary>
/// 一键生成
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void btnTotal_Click(object sender, EventArgs e)
{
for (int i = 0; i < 10; i++)
{
MakeHtml(i);
}
}
/// <summary>
/// 主页生成
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void btnIndex_Click(object sender, EventArgs e)
{
MakeHtml(0);
}
/*
为省篇幅,其他栏目页的生成省略,方法同上
/*
/// <summary>
/// 主方法
/// </summary>
/// <param name="num"></param>
public void MakeHtml(int num)
{
try
{
switch (num)
{
case 0:
//定义存放html的路径
pathName = "index.html";
//定义需要从哪个地方摘取代码
//我将aspx文件都放在了SourceFile文件夹下
UrlName = "SourceFile/index.aspx";
lbl = lblIndex;
break;
/*
为省篇幅,其他栏目页的生成方法省略,方法几乎一样
*/
}
//streamWriter后面的3个参数意思分别是,html的存放路径,是否是在原文件上增加,写入的代码编码类型
sw = new StreamWriter(Server.MapPath(pathName), false, System.Text.Encoding.GetEncoding("gb2312"));
//执行写入文件
Server.Execute(UrlName, sw);
//如果成功
lbl.Text = "生成成功!";
lbl.Style.Add("color", "red");
lbl.Style.Add("margin-left","10px");
}
catch
{
//如果中间出错
lbl.Text = "生成失败!";
lbl.Style.Add("color", "black");
lbl.Style.Add("margin-left", "10px");
}
finally
{
//最后流一定要关闭
sw.Close();
}
}
这样一个静态页面就做好了。一键生成就是循环使用了MakeHtml()方法。
当然前台页面的url都要更改过来。
你可以一个个更改,也可以用一个类来管理所有的URL。
我是这样的,前台每个连接多加一步。
href='<%= UrlManager.GetUrl("production","other") %>'
再新建一个名为UrlManager类。然后在类中写GetUrl方法。
首先引用webconfig中定义的
static string id = ConfigurationManager.AppSettings["IsStatic"].ToString();
如果是动态页面则给动态页面链接。
return "/production.aspx?sortid=" + url;
如果是静态页面则给静态页面链接。
return "/pros/sort_" + url + "_1.html";
这样的话,只需修改一个地方,整个站点的URL就轻易的管理过来了。无需一个个修改。
到这里为止,前台的栏目页静态生成方法就写好了。
剩下还有分类,产品翻页,产品详情页,新闻详情页的静态页面在下一篇文章中再写。
文章链接。http://zhanghai793941.blog.163.com/blog/static/192030054201311212031732/