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

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. 2、Jmeter测试

    一.测试流程 1.添加本次测试计划 (右键-->添加-->Threads(Users)-->线程组) 2.设置线程数 (所谓线程数就是并发用户数) 3.在线程组内添加请求(右键--& ...

  2. java调用sqlldr报错:Message 2100 not found

    java调用Oracle的sqlldr命令报错:Message 2100 not found; No message file for product=RDBMS, facility=ULMessag ...

  3. 优化Nginx并发访问量

    通过修改Nginx配置文件,优化linux内核参数,实现高并发测试. 1.优化前使用ab高并发测试 [root@proxy ~]# ab -n 2000 -c 2000 http://192.168. ...

  4. 【技巧】Windows 10 1809无法接收1903解决方法

    这都7月份了,Windows10 1903都升级的有一个月了,然而我的1809的系统一直找不到1903的更新. 虽说1903会有bug,但还是想体验一把.周围同事都更新了,心里还是痒痒的. 于是每天都 ...

  5. [php代码审计] 哈希长度拓展攻击

    已知: 1. salt的长度. 2. message==“adminadmin”. 3. MD5(salt+message)的值. 求: MD5(salt+message+填充数据+任意字符串)的值. ...

  6. 印度黑客滥用移动设备管理服务MDM监视iPhone用户

    两周前首次亮相的印度高度针对性的移动恶意软件广告系列已被发现是针对多种平台的广泛广告系列的一部分,包括Windows设备,也可能是Android. 在本月早些时候,Talos威胁情报部门的研究人员发现 ...

  7. 前端之form表单与css(1)

    目录 一.form表单 1.1表单的属性 1.2input 1.2.1form表单提交数据的两种方式 1.3select标签 1.4label标签 1.5textarea多行文本标签 二.CSS 2. ...

  8. Oracle12c修改时区

    Oacle12c支持可插入数据库(PDB)在一个统一的数据库(CDB)中具有不同的字符集.时区文件版本和数据库时区. 出于性能原因,Oracle建议将数据库时区设置为UTC(0:00),因为不需要转换 ...

  9. iText导出PDF(图片,水印,页眉,页脚)

    项目需要导出PDF,导出的内容包含图片和文本,而且图片的数量不确定,在网上百度发现大家都在用iText,在官网发现可以把html转换为PDF,但是需要收费,那就只能自己写了. 在开始之前先在网上百度了 ...

  10. 一个能极大提高生产率的Chrome新建标签页扩展

    我是一个对开发生产率有着BT需求的程序员,总是追求将自己的单位时间生产率最大化. 通过分析,我发现自己一天会反反复复使用Chrome的新建标签,然后访问常用的网站.因此,我期望新建一个默认的Chrom ...