asp.net 页面静态化

 

 

  页面静态化,有三种方式 伪静态  真静态,折中法  现在我做的是折中发

创建一个asp.net  页面,  连接跳转到还未生成的页面

 

 

 

创建HttpHandle类

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.IO;
/// <summary>
/// HttpHandle 的摘要说明
/// </summary>
public class HttpHandle : IHttpHandler
{

public bool IsReusable
{
get
{
return false;
}
}

public void ProcessRequest(HttpContext context)
{
string url = context.Request.RawUrl;
int last = url.LastIndexOf("_");
int dot = url.LastIndexOf(".");
int NewNewsID = int.Parse(url.Substring(last + 1, dot - last - 1));
string carfilepath = context.Server.MapPath("~/new/newNews_" + NewNewsID + ".html");

if (!File.Exists(carfilepath))
{
NewNews NN = new NewNews();
List<push> NewNe = NN.NewNe;
string templatepath = context.Server.MapPath("~/new/HtmlPage.html");
string templateHtml = ReadTemplate(templatepath);
templateHtml = templateHtml.Replace("{$NewNewsName}", NewNe[NewNewsID].NewNewsName);
templateHtml = templateHtml.Replace("{$NewNewsTitle}", NewNe[NewNewsID].NewNewsTitle);
templateHtml = templateHtml.Replace("{$NewNewsConters}", NewNe[NewNewsID].NewNewsConters);

WriteHtmlFile(carfilepath, templateHtml);
}
context.Response.WriteFile(carfilepath);

}


// private string ReadTemplate(string templatePath)
//{
// //检测模板文件是否存在
// if (!File.Exists(templatePath))
// {
// //模板文件不存在,抛出异常
// throw new Exception("汽车详情页面的模板文件未找到!");
// }
// //创建文件流
// FileStream fs = new FileStream(templatePath, FileMode.Open);
// //创建流读取器
// StreamReader sr = new StreamReader(fs);
// //读取文件流中的文本
// string templeteHtml = sr.ReadToEnd();
// //关闭流读取器
// sr.Close();
// //关闭文件流
// fs.Close();
// //返回读取的模板HTML
// return templeteHtml;
//}
写静态文件
//private void WriteHtmlFile(string savedPath, string htmlStr)
//{
// FileStream fs = new FileStream(savedPath, FileMode.Create);
// StreamWriter sw = new StreamWriter(fs);
// sw.Write(htmlStr);
// sw.Close();
// fs.Close();
//}

//读取模板方法


private string ReadTemplate(string templatePath)
{
if (!File.Exists(templatePath))
{
throw new Exception("报错");
}
FileStream fs = new FileStream(templatePath, FileMode.Open);
StreamReader sr = new StreamReader(fs);
string templeteHtml = sr.ReadToEnd();
sr.Close();
fs.Close();
return templeteHtml;
}

//
private void WriteHtmlFile(string savedPath, string htmlStr)
{
FileStream fs = new FileStream(savedPath, FileMode.Create);
StreamWriter sw = new StreamWriter(fs);
sw.Write(htmlStr);
sw.Close();
fs.Close();
}
}

 

 

创建一个

 

NewNews  表示服务器

添加数据

 

public List<push> NewNe = new List<push>();
public NewNews()
{
NewNe.Add(new push() { NewNewsID = 0, NewNewsName = "今天是2018/5/30", NewNewsTitle = "今天下雨了", NewNewsConters = "圆周" });
NewNe.Add(new push() { NewNewsID = 1, NewNewsName = "今天下雨了嘛是", NewNewsTitle = "今天下雨了", NewNewsConters = "32" });
NewNe.Add(new push() { NewNewsID = 2, NewNewsName = "今天是2018/5/30", NewNewsTitle = "今天下雨了", NewNewsConters = "烦烦烦烦烦烦22342" });
NewNe.Add(new push() { NewNewsID = 3, NewNewsName = "今天是2018/5/30", NewNewsTitle = "今天下雨了", NewNewsConters = "2342" });

}
}

 

创建一个push 类  添加属性字段

/// <summary>
/// push 的摘要说明
/// </summary>
public class push
{
public int NewNewsID { get; set; }
public string NewNewsName { get; set; }
public string NewNewsTitle { get; set; }
public string NewNewsConters { get; set; }
}

 

 

 

新建一个html页面  .为模板

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>表格</title>
</head>
<body>

<div>
<p>{$NewNewsName}</p>
<p>{$NewNewsConters}</p>
<p>{$NewNewsTitle}</p>

</div>

</body>
</html>

 

这样子 就可以了

转载于:https://www.cnblogs.com/whatarey/p/9112493.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/413969.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[js] 内存泄漏和内存溢出有什么区别

[js] 内存泄漏和内存溢出有什么区别 内存泄露:用动态储存分配函数内存空间&#xff0c;在使用完毕后未释放&#xff0c;导致一直占据该内存单元,直到程序结束。内存溢出:不顾堆栈分配的局部数据块大小,向数据块中写入过多数据&#xff0c;导致数据越界,结果覆盖了别的数据。常…

14 异常

第15节 异常 作业解答 # 根据课堂上给出的上下文管理器&#xff0c;判断IO操作和文件操作那个速度快 ​ from datetime import datetime import io ​ class RunTime(object):def __enter__(self):self.start_time datetime.now()print(self.start_time)return self.start_tim…

[js] 写一个方法把科学计数法转换成数字或者字符串

[js] 写一个方法把科学计数法转换成数字或者字符串 function c(a) { return a.replace(/^(\d)(?:.(\d))*eE(\d)/,(_,a,a1,p,n)>{ a1a1|| if(p-&&n>0) { return 0.0.repeat(n-1)aa1 }else{ return a(a1.length>n? a1.substr(0, n).a1.substr(n): a10.repeat…

Netty心跳机制-长连接

前文需求回顾 完成对红酒窖的室内温度采集及监控功能。由本地应用程序温度传感器定时采集室内温度上报至服务器&#xff0c;如果温度 >20 C 则由服务器下发重启空调指令&#xff0c;如果本地应用长时间不上传温度给服务器&#xff0c;则给户主手机发送一条预警短信。 Netty…

带你反编译APP然后重新打包「MacOS」

最近有小伙伴留言&#xff0c;怎么把一款APP改成自己的信息呀&#xff0c;咳咳&#xff0c;这又来送题材了&#xff0c;今天水一把APP反编译回编译&#xff0c;文中会针对一款APP进行简单的修改信息&#xff0c;问问题的小伙伴还不火速右上角支持一下。 MacOS跟Windows我会分开…

Hadoop学习之pig

首先明确pig是解决什么问题而出现的&#xff0c;pig是为了简化mapreduce编程而设计的&#xff0c;并且有自己的一套脚本语言。其基本由命令和操作符来定义的&#xff0c;如load&#xff0c;store&#xff0c;它的功能很明确&#xff0c;用来大规模处理数据。其脚本形如script.p…

[js] js怎样避免原型链上的对象共享?

[js] js怎样避免原型链上的对象共享&#xff1f; 组合继承 优势 公有的写在原型 私有的卸载构造函数 可以向父类传递参数劣势 需要手动绑定constructor 封装性一般 重复调用父类性能损耗&#x1f330; function Parent (name, friends) {// 私有的部分this.name name;this…

Codeforces 552C Vanya and Scales(进制转换+思维)

题目链接&#xff1a;http://codeforces.com/problemset/problem/552/C 题目大意&#xff1a;有101个砝码重量为w^0,w^1&#xff0c;....&#xff0c;w^100和一个重量为m的物体&#xff0c;问能否在天平两边放物品和砝码使其平衡。解题思路&#xff1a;将m化为w进制的数&#x…

反编译一款APP然后重新打包(Windows环境)

最近有小伙伴私信我&#xff0c;怎么把一款APP改成自己的信息呀&#xff0c;咳咳&#xff0c;这又来送题材了&#xff0c;今天水一把APP反编译回编译&#xff0c;文中会针对一款APP进行简单的修改信息&#xff0c;问问题的小伙伴还不火速右上角支持一下。 MacOS跟Windows我是分…

[js] 写一个方法,实时验证input输入的值是否满足金额如:3.56(最多只有两位小数且只能数字和小数点)的格式,其它特殊字符禁止输入

[js] 写一个方法&#xff0c;实时验证input输入的值是否满足金额如&#xff1a;3.56(最多只有两位小数且只能数字和小数点)的格式&#xff0c;其它特殊字符禁止输入 <body><input type"text" id"amount"><em id"message"><…

Vmware下CentOs7 桥接模式下配置固定IP

1.安装完CentOS7后 修改虚拟机网络适配器配置&#xff1a;改成桥接模式 2.设置Vmware的 编辑->虚拟网络编辑器 3.重启CentOs7 , 查看网络 # ip addr interface是&#xff1a; ens33 4.查看本地真实机ip&#xff0c;然后配置虚拟机固定ip windows 进入命令行模式cmd&#xf…

[js] 使用delete删除数组,其长度会改变吗

[js] 使用delete删除数组&#xff0c;其长度会改变吗 使用delete删除数组元素&#xff0c;其长度会改变吗&#xff1f;咱来写个案例&#x1f330;看看就知道了&#xff1a;var arr [1, 2, 3] delete arr[1] console.log(arr) console.log(arr.length)结果如下&#xff1a;通过…

MacOS svn:E230001 Can‘t use Subversion command line client: svn The path to the Subversion executabl

注意&#xff1a;本文仅针对于 MacOS 系统。 错误信息如下&#xff1a; Cant use Subversion command line client: svn The path to the Subversion executable is probably wrong. Fix it.好家伙&#xff0c;今天发现 IDEA 中的 SVN 突然不能用了… 因为之前的 SVN 是使用 …

Seurat | 单细胞分析工具

Seurat是一个老牌的单细胞分析工具了&#xff08;satija的力作&#xff09;&#xff0c;我之前测试过&#xff0c;但是没怎么用。 最近发现这个工具又publish在了NBT上&#xff0c;所以很有必要看一下这篇文章。 Integrating single-cell transcriptomic data across different…

[js] 代码中如果遇到未定义的变量,会抛出异常吗?程序还会不会继续往下走?

[js] 代码中如果遇到未定义的变量&#xff0c;会抛出异常吗&#xff1f;程序还会不会继续往下走&#xff1f; 在浏览器环境下JS 解析器解析到未定义变量时&#xff0c;会抛出 Uncaught ReferenceError 错误&#xff0c;JS 引擎会停止解析后面的代码&#xff0c;但之前的代码不…

创建线程都有哪些方式?— Callable篇

今天我们来看一道面试题引发的思考 问&#xff1a; 创建线程都有哪些方式&#xff1f; 答&#xff1a; 我了解的有四种创建方式&#xff1a; 继承Thread类创建线程类通过Runnable接口创建线程类通过Callable和Future创建线程通过线程池创建 相信大家回答这个问题没什么难度吧…

[js] 说说你对JSBridge的理解

[js] 说说你对JSBridge的理解 js和原生应用之间交互的桥梁个人简介 我是歌谣&#xff0c;欢迎和大家一起交流前后端知识。放弃很容易&#xff0c; 但坚持一定很酷。欢迎大家一起讨论 主目录 与歌谣一起通关前端面试题

ASP.NET Core 网站发布到Linux服务器

长期以来&#xff0c;使用.NET开发的应用只能运行在Windows平台上面&#xff0c;而目前国内蓬勃发展的互联网公司由于成本的考虑&#xff0c;大量使用免费的Linux平台&#xff0c;这就使得.NET空有一身绝技但无法得到广大的施展空间&#xff0c;.NET平台被认为只适合开发企业内…

如何暂停一个正在运行的线程?

今天把小伙伴问懵了&#xff0c;小刚&#xff0c;你知道怎么停止一个线程吗&#xff1f; 这…&#xff0c;这…&#xff0c;stop&#xff1f; 原来平时小刚这小子只知道创建线程&#xff0c;不知道怎么暂停线程呀~[狗头] 停止线程是在多线程开发中很重要的技术点&#xff0c;…

[js] js循环中调用异步的方法,如何确保执行结果的顺序是正确的?

[js] js循环中调用异步的方法&#xff0c;如何确保执行结果的顺序是正确的&#xff1f; An example:let searchApi function(arg){return new Promise((resolve,reject)>{setTimeout(()>{console.log(arg)resolve(arg)}, 20)}) }; let fields [1,2,3,4]; let arr new…