C#.NET动态页面静态化生成
一,动态页面生成静态也的思路是怎样呢?
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动态页面静态化生成的更多相关文章
- Spring MVC 学习总结(七)——FreeMarker模板引擎与动态页面静态化
模板引擎可以让程序实现界面与数据分离,业务代码与逻辑代码的分离,这就提升了开发效率,良好的设计也使得代码复用变得更加容易.一般的模板引擎都包含一个模板解析器和一套标记语言,好的模板引擎有简洁的语法规则 ...
- Asp.net动态页面静态化之初始NVelocity模板引擎
Asp.net动态页面静态化之初始NVelocity模板引擎 静态页面是网页的代码都在页面中,不须要运行asp,php,jsp,.net等程序生成client网页代码的网页,静态页面网址中一般不含&q ...
- C#实现动态页面静态化
制作一个aspx页面,专门用来生成各个动态aspx页面的静态页面.如下图所示,仅将内容页和主页面生成静态页面,当然本例只是一个简单的范例,实际情况如很复杂,但原理都是相同的. 生成内容页: 本例中的不 ...
- php使用ob缓存来实现动态页面静态化
php7中的php.ini 默认开启 output_buffering = 4096 例子: <?phpinclude_once 'common/common.php';//数据库操作方法 $f ...
- php页面静态化
如何优化页面响应时间: 动态页面静态化 优化数据库 使用负载均衡 使用缓存 如果页面中的一些内容不经常改动,可以使用动态页面静态化.好处是:减少服务器脚本的计算时间:降低服务器的响应时间. 1.动态U ...
- PHP 实现页面静态化
PHP文件执行阶段:语法分析->编译->运行 静态html文件执行顺序:运行 动态程序: 连接数据库服务器或者缓存服务器->获取数据->填充到模板->呈现给用户 关于优化 ...
- filter应用案例四:页面静态化
1 说明 你到"当当"搜索Java分类图书时,"当当"会去查询数据库!每天都有很多人去搜索"Java分类"的图书,每次都去访问数据库,这会有 ...
- JavaWeb笔记——利用过滤器实现页面静态化
1.说明 页面静态化是把动态页面生成的html保存到服务器的文件上,然后再有相同请求时,不再去执行动态页面,而是直接给用户响应上次已经生成的静态页面. * 核心思路为拦截请求,实现请求转发指向静态页面 ...
- [转]PHP实现页面静态化的超简单方法
为什么要页面静态化? 1.动态文件执行过程:语法分析-编译-运行 2.静态文件,不需要编译,减少了服务器脚本运行的时间,降低了服务器的响应时间,直接运行,响应速度快:如果页面中一些内容不经常改动,动态 ...
随机推荐
- 脚本_查找 Linux 系统中的僵尸进程
#!bin/bash#功能:查找Linux系统中的僵尸进程#作者:liusingbon#使用awk判断ps命令输出的第8列为Z时,显示该进程的 PID 和进程命令ps aux |awk '{if($8 ...
- 搭建Keepalived+LNMP架构web动态博客 实现高可用与负载均衡
环境准备: 192.168.193.80 node1 192.168.193.81 node2 关闭防火墙 [root@node1 ~]# systemctl stop firewalld #两台都 ...
- 解决pycharm运行py文件时只有unittest选项的方法
有时候在编完脚本开始运行时,发现某个py脚本右键运行的选项不是run,二是run in unittest,试过很多方法都不能很好的去除,主要是因为脚本中含有test字符串,一种解决方法是将脚本中所有的 ...
- windows 10 删除资源管理器导航栏 Creative Cloud Files
安装完Adobe的Photoshop.After Effects等软件后,资源管理器导航栏会出现让人讨厌的Creative Cloud Files目录,稍微修改注册表即可删除. 快捷键Windows ...
- 【HbuilerX-Bug】终端无法显示打印信息,也无法输入
经过调试HbuilderX“终端”插件,最终定位问题,问题是插件在打开终端时,无法定位具体的窗口程序,如“cmd.exe”.“powershell.exe”等.可能产生原因:1.可能是电脑系统升级产生 ...
- AutoLayout面试题记录-自动布局
1. 面试上海某家软件公司,题目是这样,有一个View,距左右父View长度一定,高度一定.这个View上面有4个小View,高度相同(或者说一定), 要求不管屏幕怎么变,这4个小View总是等宽平分 ...
- Hadoop 学习目录(搁置)
简介 Hadoop是一个由Apache基金会所开发的分布式系统基础架构.用户可以在不了解分布式底层细节的情况下,开发分布式程序.充分利用集群的威力进行高速运算和存储.Hadoop实现了一个分布式文件系 ...
- js不区分大小写匹配并代码高亮,且不改变原来文本大小写格式
//高亮字符串 string: 需要处理的字符串,keyword:键盘输入的内容 function heightLight(string, keyword) { var reg = new RegEx ...
- <!DOCTYPE>是什么
所有浏览器都支持<!DOCTYPE> 概念 是指web浏览器关于页面使用哪个html版本进行编写的指令. 常用DOCTYPE声明 html 5 <!DOCTYPE html> ...
- What is httpcontext
https://docs.microsoft.com/en-us/dotnet/api/system.web.httpcontext?view=netframework-4.8 Encapsulate ...