一,动态页面生成静态也的思路是怎样呢?

1》首先我们都是需要有一个静态模板,这模板的作用就是静态页的最基本模板,如下代码:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>$title$</title>
</head>
<body>
<div> <h1>标题:$sgin$</h1></div>
<div>
内容开始:$content$
</div>
<div>
作者:$author$
</div>
<div>时间:$time$</div>
<div>结束</div>
</body>
</html>

那代码中的$content$等标识是用来替换的标识

2》我们建一个MVC项目,在HomeControllor中的代码,如下:

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Web;
using System.Web.Mvc;
using System.Xml; namespace DynamicCreateStaticHtml.Controllers
{
public class HomeController : Controller
{
public ActionResult Index()
{
string htmlName = WriteFile(new HtmlModel()
{
Title = "生成静态页面",
Content = "动态自动生成静态页面并赋值的方法",
Author = "admin",
Time = DateTime.Now.ToString(),
Sgin = "生成静态页面"
});
if (!string.IsNullOrWhiteSpace(htmlName))
{
return Redirect("/StaticHtml/" + htmlName + ".html");
}
else
{
return Content("生成页面出错");
}
}
/// <summary>
/// 动态生成静态方法
/// </summary>
/// <param name="model"></param>
/// <returns></returns>
public string WriteFile(HtmlModel model)
{
//获取当前项目的文档物理路径,用于生产静态HTML页面存地址 string path = Server.MapPath("./StaticHtml/");
//gb2312简体中文编码
Encoding code = Encoding.GetEncoding("gb2312");
// 读取模板文件,在项目下的文件
string temp = Server.MapPath("/StaticHtml/HtmlTemp.html");
StreamReader sr = null;
StreamWriter sw = null;
string str = "";
string htmlfilename = Guid.NewGuid().ToString();
try
{
sr = new StreamReader(temp, code);
str = sr.ReadToEnd(); // 读取文件
//替换内容,模板文件已经读入到名称为str的变量中了
str = str.Replace("$title$", model.Title); //模板页中的title
str = str.Replace("$sgin$", model.Sgin); //模板页中的sgin
str = str.Replace("$content$", model.Content); //模板页中的content
str = str.Replace("$author$", model.Author);//模板页中的author
str = str.Replace("$time$", model.Time); //模板页中的time
// 写文件
sw = new StreamWriter(path + htmlfilename + ".html", false, code);
sw.Write(str);
sw.Flush();
}
catch (Exception ex)
{
}
finally
{
sw.Close();
sr.Close(); //必须关闭静态文件链接,要不然会报错
}
return htmlfilename;
}
/// <summary>
/// 替换实体
/// </summary>
public class HtmlModel
{
public string Title { get; set; }
public string Sgin { get; set; }
public string Content { get; set; }
public string Author { get; set; }
public string Time { get; set; }
}
}
}

3》由以上代码我们可以看到,我们将静态模板的标识替换成我们要显示的标识,然后返回这个页面,这也是动态页面静态话生成的核心思路,但是我们要注意模板的文件连接需要close,要不然可能会导致文件已占用的错误

C#.NET动态页面静态化生成的更多相关文章

  1. Spring MVC 学习总结(七)——FreeMarker模板引擎与动态页面静态化

    模板引擎可以让程序实现界面与数据分离,业务代码与逻辑代码的分离,这就提升了开发效率,良好的设计也使得代码复用变得更加容易.一般的模板引擎都包含一个模板解析器和一套标记语言,好的模板引擎有简洁的语法规则 ...

  2. Asp.net动态页面静态化之初始NVelocity模板引擎

    Asp.net动态页面静态化之初始NVelocity模板引擎 静态页面是网页的代码都在页面中,不须要运行asp,php,jsp,.net等程序生成client网页代码的网页,静态页面网址中一般不含&q ...

  3. C#实现动态页面静态化

    制作一个aspx页面,专门用来生成各个动态aspx页面的静态页面.如下图所示,仅将内容页和主页面生成静态页面,当然本例只是一个简单的范例,实际情况如很复杂,但原理都是相同的. 生成内容页: 本例中的不 ...

  4. php使用ob缓存来实现动态页面静态化

    php7中的php.ini 默认开启 output_buffering = 4096 例子: <?phpinclude_once 'common/common.php';//数据库操作方法 $f ...

  5. php页面静态化

    如何优化页面响应时间: 动态页面静态化 优化数据库 使用负载均衡 使用缓存 如果页面中的一些内容不经常改动,可以使用动态页面静态化.好处是:减少服务器脚本的计算时间:降低服务器的响应时间. 1.动态U ...

  6. PHP 实现页面静态化

    PHP文件执行阶段:语法分析->编译->运行 静态html文件执行顺序:运行 动态程序: 连接数据库服务器或者缓存服务器->获取数据->填充到模板->呈现给用户 关于优化 ...

  7. filter应用案例四:页面静态化

    1 说明 你到"当当"搜索Java分类图书时,"当当"会去查询数据库!每天都有很多人去搜索"Java分类"的图书,每次都去访问数据库,这会有 ...

  8. JavaWeb笔记——利用过滤器实现页面静态化

    1.说明 页面静态化是把动态页面生成的html保存到服务器的文件上,然后再有相同请求时,不再去执行动态页面,而是直接给用户响应上次已经生成的静态页面. * 核心思路为拦截请求,实现请求转发指向静态页面 ...

  9. [转]PHP实现页面静态化的超简单方法

    为什么要页面静态化? 1.动态文件执行过程:语法分析-编译-运行 2.静态文件,不需要编译,减少了服务器脚本运行的时间,降低了服务器的响应时间,直接运行,响应速度快:如果页面中一些内容不经常改动,动态 ...

随机推荐

  1. 部署Tomcat服务器

    部署Tomcat服务器,具体内容如下: 1.安装部署JDK基础环境; 2.安装部署Tomcat服务器; 3.创建JSP测试页面,文件名为test.jsp,显示服务器当前时间. 然后客户机访问Web服务 ...

  2. alert(1) to win

    一. function escape(s) { return '<script>console.log("'+s+'");</script>'; } 两种思 ...

  3. 使用Github 当作自己个人博客的图床

    使用Github 当作自己个人博客的图床 前提 本文前提: 我个人博客的草稿是存放在 github上的一个仓库 diarynote 截图存放的图片或者需要放在文章中图片,会固定存放在对应的文件夹中,我 ...

  4. PHP与CI学习笔记

    CodeIgniter框架学习 安装 下载好包后,解压复制 system 和 application 目录到网站目录下 配置 配置目录 打开index.php设置好 $system_path . $a ...

  5. Redis基础系列-安装启动

    安装 ①将Redis 的tar 包上传到opt 目录②解压缩③安装gcc 环境我们需要将源码编译后再安装,因此需要安装c 语言的编译环境!不能直接make! 可以上网,yum install –y g ...

  6. Dubbo学习-4-dubbo简单案例-1

    模拟一个需求,通过dubbo实现RPC调用: 这里用户服务模块的查询用户地址的功能,就是一个服务提供者,而订单服务模块的创建订单模块就是一个服务消费者: 1. 创建服务提供者的maven工程:user ...

  7. 本页面用来演示如何通过JS SDK,创建完整的QQ登录流程,并调用openapi接口

    QQ登录将用户信息存储在cookie中,命名为__qc__k ,请不要占用 __qc__k : 1) :: 在页面顶部引入JS SDK库: 将“js?”后面的appid参数(示例代码中的:100229 ...

  8. win7系统开机启动出现蓝屏,提示BAD_SYSTEM_CONFIG_INFO

    因为我在msconfig->引导->高级选项中将最大内存勾选,最大内存勾选后是4096MB,但是在点击确定按钮后,会自动变成0MB(点击确定按钮后再点击高级选项),导致系统无法识别内存,开 ...

  9. Layui数据表格/搜索重加载/分条件操作/工具条监听

    <div class="layui-layout layui-layout-admin" style="padding-left: 20px;"> ...

  10. WebApi系列~基于RESTful标准的Web Api 转载 https://www.cnblogs.com/lori/p/3555737.html

    微软的web api是在vs2012上的mvc4项目绑定发行的,它提出的web api是完全基于RESTful标准的,完全不同于之前的(同是SOAP协议的)wcf和webService,它是简单,代码 ...