EF利用IHttpHandler静态化处理 (动态生成网页)(非连接数据库):连接数据库在主页

10 篇文章 0 订阅

EF利用IHttpHandler静态化处理

(非连接数据库):连接数据库在主页

目录
在这里插入图片描述

创建模板

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <title>Temp.html(模板)</title>
</head>
<body>
    <dl>
        <dt><img src="../image/{$imgs}" /></dt>
        <dt>名称:{$name}</dt>
    </dl>
</body>
</html>

创建读取类

        public bool IsReusable {
            get { return false; }
        }
        public void ProcessRequest(HttpContext context)
        {
            //获取ID
            string url = context.Request.RawUrl;
            //截取字符转
            int a = url.LastIndexOf("_");
            int b = url.LastIndexOf(".");
            //获取ID
            int id = int.Parse(url.Substring(a+1,b-1-a));
            //对模板进行读取   (我要得到模板的路径)
            string tmpPath = context.Server.MapPath("~/Car/Temp.html");
            //判断静态页面是否存在    (如果存在直接读取)
            string htmlPath = context.Server.MapPath("~/Car/info_"+ id +".html");
            //判断
            if (!File.Exists(htmlPath))
            {
                //不存在,读取模板
                string tmpStr = ReadTmp(tmpPath);
                //替换标签
                CarManage cm = new CarManage();  //这个是一个集合  里面有数据,
                List<Car> cars = cm.carlist;   //这个是类型  和上面的两个应该可以替换成数据库
                tmpStr = tmpStr.Replace("{$imgs}", cars[id].image);
                tmpStr = tmpStr.Replace("{$name}", cars[id].name);
                //保存生成的新的页面  创建页面
                WriteHtml(htmlPath, tmpStr);
            }
            //直接读取
            context.Response.WriteFile(htmlPath);
        }
        //读取模板的方法
        public string ReadTmp(string tmpPath) {
            FileStream fs = new FileStream(tmpPath, FileMode.Open);
            StreamReader sr = new StreamReader(fs);
            string tmpStr = sr.ReadToEnd();//读取到最后
            sr.Close();
            fs.Close();
            return tmpStr;
        }
        //创建页面
        public void WriteHtml(string savePath, string tmpStr) {
            FileStream fs = new FileStream(savePath, FileMode.Create);
            StreamWriter sw = new StreamWriter(fs);
            sw.Write(tmpStr);
            sw.Close();
            fs.Close();
        }
    }

Web配置

  <!--配置-->
  <system.webServer>
    <handlers>
      <add name="aa" verb="*" path="Car/*.html" type="_2静态化处理.Hander" />
    </handlers>
  </system.webServer>

主页面

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="index.aspx.cs" Inherits="_2静态化处理.index" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <title>index.aspx(主页面)</title>
</head>
<body>
    <form id="form1" runat="server">
        <div>
            <ul>
                <li><a href="Car/info_0.html">奥迪</a></li>
                <li><a href="Car/info_1.html">宝马</a></li>
            </ul>
        </div>
    </form>
</body>
</html>

数据库博客连接https://blog.csdn.net/weixin_44719554/article/details/105373263

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值