前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Razor模板引擎工作原理及怎么调用外部方法演示

Razor模板引擎工作原理及怎么调用外部方法演示

作者头像
静心物语313
发布2020-03-24 17:10:02
1.2K0
发布2020-03-24 17:10:02
举报

工作原理:

RazorEngine引擎就是将cshtml模板文件进行了字符串的拼接,然后,再封装为一个程序集。。。再通过一般处理程序,进行调用。。

下面来封装一个方法。来简化上一节内容的操作;

1.获得虚拟路径; 2.从虚拟路径中读取cshtml模板中的内容; 3.给cshtml模板文件取一个别名字;(提高网站性能) 4. 用model替换模板中的变量;

封装一个类

步骤:项目名字—右键—-添加—–RPcshtmlHelper

RPcshtmlHelper.cs

代码语言:javascript
复制
using RazorEngine;
using RazorEngine.Text;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Web;

namespace Web2
{
    public class RPcshtmlHelper
    {
        //弄清关系,不要怀疑工具的错误,检查自己操作的问题

        //1.封装一个方法,省去了每次都重复自己添加cacheName的麻烦
        public static string ParseRazor(HttpContext context, string csHtmlVirtualPath, object model)
        {
            //2.拿到虚拟路径
            string fullPath = context.Server.MapPath(csHtmlVirtualPath);
            //3.读取模板
            string cshtml = File.ReadAllText(fullPath);
            //4.给模板文件取一个别名字
            string cacheName = fullPath + File.GetLastWriteTime(fullPath);
            //5.用model替换变量
            string html = Razor.Parse(cshtml,model,cacheName);
            //6.返回模板文件内容
            return html;
        }

        //1.定义一个简单的《静态》方法,作为测试,这里的方法是在cshtml模板文件中调用的
        public static HtmlEncodedString Test1()
        {
            return new HtmlEncodedString("<input type='text' />");

        }
        // 同样定义第二个《静态》方法
        public static RawString Test2()
        {
            return new RawString("<input type='text' />");

        }
    }
}

定义一个模板Razor2.cshtml

代码语言:javascript
复制
<!--1.首先,在模板文件中读取RPcshtmlHelper的命名空间-->
@using Web2

<!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>
    <!--2.调用类中的测试方法Test1--Test2-->
     html标签转义过的   @RPcshtmlHelper.Test1()<br />
    html标签没有转义过的   @RPcshtmlHelper.Test2()
    <!--3.添加一个一般处理处理程序,调用该模板文件-->
</body>
</html>

新建一个一般处理程序,调用类中封装好的方法,来读取模板文件cshtml

代码语言:javascript
复制
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

namespace Web2
{
    /// <summary>
    /// Razor2 的摘要说明
    /// </summary>
    public class Razor2 : IHttpHandler
    {

        public void ProcessRequest(HttpContext context)
        {
            context.Response.ContentType = "text/html";//1.修改为html

            //2.调用封装的方法ParseRazor
           string html= RPcshtmlHelper.ParseRazor(context, "~/Razor2.cshtml",null);

            //3.将转化过的模板内容输入到浏览器
            context.Response.Write(html);
        }

        public bool IsReusable
        {
            get
            {
                return false;
            }
        }
    }
}

读取结果

这里写图片描述
这里写图片描述
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 工作原理:
  • 封装一个类
    • RPcshtmlHelper.cs
    • 定义一个模板Razor2.cshtml
    • 新建一个一般处理程序,调用类中封装好的方法,来读取模板文件cshtml
    • 读取结果
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档