当前位置: 首页 > news >正文

ASP.NET静态页生成

由于业务需要,得把页面按照模板页生成静态页面,所以自己就琢磨了下,写些思路,以备日后需要的时候用。

静态页生成用到最多的就是匹配跟替换了,首先得读取模板页的html内容,然后进行你自己定义的标签匹配,比如说我要把我定义的标题标签换成读取数据库的标题内容,那么可以直接读取数据库的标题,然后直接进行替换,然后生成html文件就OK了。

代码:

/// <summary>
        /// 解析模板的html中匹配的标签,进行替换(暂时只能用于没有分页的页面)
        /// </summary>
        /// <param name="html">HTML</param>
        /// <returns>返回替换后的HTML</returns>
        public static string ReturnHtml(string html)
        {
            string newhtml = html;
            newhtml = newhtml.Replace("<#Title#>", "这个是标题替换");//替换标题
            //newhtml = newhtml.Replace("<#Content#>", "这个是内容替换");//替换标题
            newhtml = CreateList(newhtml);
            return newhtml;
        }
/// <summary>
        /// 读取HTML文件
        /// </summary>
        /// <param name="temp">html文件的相对路径</param>
        /// <returns>返回html</returns>
        public static string ReadHtmlFile(string temp)
        {
            StreamReader sr = null;
            string str = "";
            try
            {
                sr = new StreamReader(HttpContext.Current.Server.MapPath(temp), code);
                str = sr.ReadToEnd(); // 读取文件 
            }
            catch (Exception exp)
            {
                HttpContext.Current.Response.Write(exp.Message);
                HttpContext.Current.Response.End();
            }
            finally
            {
                sr.Dispose();
                sr.Close();

            }
            return str;
        }
/// <summary>
        /// 生成html文件
        /// </summary>
        /// <param name="filmname">文件名(带相对路径路径,如:../a.html)</param>
        /// <param name="html">html内容(整个)</param>
        public static void writeHtml(string filmname, string html)
        {
            System.Text.Encoding code = System.Text.Encoding.GetEncoding("utf-8");
            string htmlfilename = HttpContext.Current.Server.MapPath(filmname);
            string str = html;
            StreamWriter sw = null;
            // 写文件
            try
            {
                sw = new StreamWriter(htmlfilename, false, code);
                sw.Write(str);
                sw.Flush();
            }

            catch (Exception ex)
            {
                HttpContext.Current.Response.Write(ex.Message);
                HttpContext.Current.Response.End();
            }

            finally
            {
                sw.Close();
            }

        }

从代码可以看得出来,生成静态页面其实就是这么一个过程:读取模板页的源码->匹配替换自定义的标签为实际内容->最后再生成新的html文件,思路就这么走,以前没有动手过,觉得太复杂了,如今主动写的时候,发现也不算很复杂。

最后,如果说有些生成分页列表的,也就是把列表页面进行循环生成,有多少页就生成多少个静态页文件,如果有不懂的可以回复问,我懂的我尽量为大家解答,当然,不懂的我也无能为力了,毕竟我也是刚接触这功能,现在暂时弄得一个最简陋的样子,附图上来给大家笑话笑话:

 

最后是求助环节:这是小子的小站:www.weixh.net,求助SEO的大婶,请问我该怎么推广呢?

转载于:https://www.cnblogs.com/sanjuantianshu/p/4118575.html

相关文章:

  • 清除浮动的方法有哪些?
  • C语言 要求用户录入5个数字,用函数来完成升序排序输出!
  • js词法分析2
  • [LeetCode] Merge Two Sorted Lists
  • telnet测试端口号
  • 已有打开的与此 Command 相关联的 DataReader,必须首先将它关闭。
  • DateTime.ToString格式化日期,使用DateDiff方法获取日期时间的间隔数
  • EasyMock的使用
  • dssfsfsfs
  • Android应用程序资源的查找过程分析
  • C++中正确使用PRId64 (转载)
  • 一些变量(39~62)
  • [转]Java学习日记之 volatile
  • beta 分布的简单理解
  • 二. Weinre 调试 IOS Hybrid APP
  • [NodeJS] 关于Buffer
  • [译] 怎样写一个基础的编译器
  • 【Linux系统编程】快速查找errno错误码信息
  • 【跃迁之路】【585天】程序员高效学习方法论探索系列(实验阶段342-2018.09.13)...
  • Essential Studio for ASP.NET Web Forms 2017 v2,新增自定义树形网格工具栏
  • Fabric架构演变之路
  • GitUp, 你不可错过的秀外慧中的git工具
  • Git的一些常用操作
  • go语言学习初探(一)
  • JAVA_NIO系列——Channel和Buffer详解
  • log4j2输出到kafka
  • MySQL用户中的%到底包不包括localhost?
  • Object.assign方法不能实现深复制
  • vue 配置sass、scss全局变量
  • 大型网站性能监测、分析与优化常见问题QA
  • 那些被忽略的 JavaScript 数组方法细节
  • 爬虫模拟登陆 SegmentFault
  • 如何在GitHub上创建个人博客
  • 什么软件可以剪辑音乐?
  • 微服务核心架构梳理
  • 我的业余项目总结
  • 一些css基础学习笔记
  • 阿里云API、SDK和CLI应用实践方案
  • ​MPV,汽车产品里一个特殊品类的进化过程
  • # 20155222 2016-2017-2 《Java程序设计》第5周学习总结
  • #调用传感器数据_Flink使用函数之监控传感器温度上升提醒
  • (4)logging(日志模块)
  • (Matalb时序预测)PSO-BP粒子群算法优化BP神经网络的多维时序回归预测
  • (ZT)一个美国文科博士的YardLife
  • (附源码)springboot 校园学生兼职系统 毕业设计 742122
  • (附源码)springboot电竞专题网站 毕业设计 641314
  • (附源码)springboot美食分享系统 毕业设计 612231
  • *Algs4-1.5.25随机网格的倍率测试-(未读懂题)
  • .“空心村”成因分析及解决对策122344
  • .NET Core MongoDB数据仓储和工作单元模式封装
  • .net wcf memory gates checking failed
  • .net 使用ajax控件后如何调用前端脚本
  • .Net6支持的操作系统版本(.net8已来,你还在用.netframework4.5吗)
  • .net使用excel的cells对象没有value方法——学习.net的Excel工作表问题
  • .vue文件怎么使用_我在项目中是这样配置Vue的