从预先定义好的模板生成静态页面:
读取模板,替换内容,保存文件。
首先准备一个html模板,名称是News.html
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>$Title</title>
</head>
<body>
<div id="Content">
$Content
</div>
</body>
</html>
代码里面的
Content是占位符,名字自定义
然后在项目里面添加一个WEB窗体(以.aspx为后缀名的新建项)
在WebForm1.aspx中添加如下代码:
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="test.WebForm1" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>
标题:<asp:TextBox ID="标题" runat="server"></asp:TextBox><br/><br/>
页面名称:<asp:TextBox ID="名称" runat="server"></asp:TextBox><br/><br/>
内容:<asp:TextBox ID="内容" runat="server" Height="201px"></asp:TextBox>
<asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="确定" />
</div>
</form>
</body>
</html>
在WebForm1.aspx.cs中添加如下代码:
using System;
using System.IO;
namespace test
{
public partial class WebForm1 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
//确定
protected void Button1_Click(object sender, EventArgs e)
{//找到模板页
string filePath = Server.MapPath(".") + "\\News.html";
string fileContent = string.Empty;
//使用StreamReader类读取代码
using (var reader=new StreamReader(filePath))
{
fileContent = reader.ReadToEnd();
}
//这里简单的使用Replace来替换自己在模版中给的特殊字符
string Content = fileContent.Replace("$Content", 内容.Text).Replace("$Title",标题.Text);
try
{
//使用StreamWriter生成纯静态html页面
using (StreamWriter sw = new StreamWriter(Server.MapPath(".")+"/AddPage/"+名称.Text+".html",false,System.Text.Encoding.GetEncoding("utf-8")))//保存地址
{
sw.WriteLine(Content);
sw.Flush();
sw.Close();
}
Response.Redirect("AddPage/"+名称.Text+".html");
}
catch
{
Response.Write("<script>alert('The file could not be wirte:');</script>");
}
}
}
}