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

原创 2015年07月09日 14:45:48

工作原理:

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

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

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

封装一个类

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

RPcshtmlHelper.cs

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

<!--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

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;
            }
        }
    }
}

读取结果

这里写图片描述

版权声明:本文为博主原创文章,未经博主允许不得转载。

模板引擎ArtTemplate使用方法

导入模板引擎: 将下载好的ArtTemplate导入到页面中 定义模板: 这样的语法是定义逻辑表达式 这样的语法为输出表达式 注意:这路的模板type='text'如果写成jav...
  • chiuwingyan
  • chiuwingyan
  • 2017年08月14日 15:10
  • 108

C#模板引擎 RazorEngine3.7的简单使用

RazorEngine是什么,可以用来做什么就不多介绍了,网上的说明还是很多的。 但网上大多的示例都是2.0版本的,RazorEngine的3.7版本还是改动很大的,有必要做下简单的记录。 可通过nu...
  • somethingwhat
  • somethingwhat
  • 2015年08月01日 19:05
  • 5084

Razor模板引擎

为什么使用Reazor原因:类似于前边写的模板页,自己写了。还需要用replace来替换成自己想要的变量。。常见的模板引擎:Razor、Nvelocity、Vtemplate。 Razor有VS自动提...
  • xcl13014673050
  • xcl13014673050
  • 2015年07月08日 17:21
  • 1171

MVC学习笔记2---Razor原理

Razor是一门前端标记语言。 它的原理是: 理解: 1.Razor 作为一个前端标记语言,它存在一个Razor Template模板,模板为xml 文档    定义了各个 1.将.cshtml与...
  • lxy1106
  • lxy1106
  • 2016年03月04日 16:49
  • 578

MVC| Razor 布局-模板页 | ViewStart.cshtml

ViewStart.cshtml视图页面 要点1 MVC中执行任何一个视图之前都要先执行Views文件夹下的 _ViewStart.cshtml 视图的内容 注意点:想要上面的描述成立,则在actio...
  • Fanbin168
  • Fanbin168
  • 2015年11月09日 00:37
  • 3576

MVC时代基础知识:Page的ResolveClientUrl与ResolveUrl读取路径,Razor @Href 解决相对路径

一、ResolveClientUrl与ResolveUrl Page.ResolveClientUrl():返回相对于当前页面的一个相对地址 Page.ResolveUrl():返回相对于当前应用...
  • educast
  • educast
  • 2012年08月09日 11:54
  • 7370

C#模板引擎 RazorEngine3.7的简单使用

RazorEngine是什么,可以用来做什么就不多介绍了,网上的说明还是很多的。 但网上大多的示例都是2.0版本的,RazorEngine的3.7版本还是改动很大的,有必要做下简单的记录。 可通过nu...
  • somethingwhat
  • somethingwhat
  • 2015年08月01日 19:05
  • 5084

模板引擎-NVelocity

Web开发的模板引擎是为了使界面、逻辑、数据分离,用它可以进行逻辑处理、数据填充,最终生成一个标准的HTML文档,然后以字符串形式返回给浏览器进行解析。模板引擎有很多种,这里介绍感觉使用很方便的NVe...
  • wang379275614
  • wang379275614
  • 2014年01月16日 22:01
  • 3907

.NET RazorEngine Razor知识集合 Razor也可以这样玩

mvc Razor除了在视图上解析外,一样可以这样用。  在有些项目需求上或许需要根据模板生产静态页面,那么你一样可以用Razor语法去直接解析你的页面从而把解析的页面生成静态页,首先介绍下Razor...
  • fuyifang
  • fuyifang
  • 2016年08月09日 21:00
  • 2135

PHP模板引擎——Smarty工作原理及初始化配置

smarty是一个使用PHP写出来的模板PHP模板引擎,它提供了逻辑与外在内容的分离,简单的讲,目的就是要使用PHP程序员同美工分 离,使用的程序员改变程序的逻辑内容不会影响到美工的页面设计,美工重新...
  • arvin_top
  • arvin_top
  • 2016年11月29日 19:50
  • 303
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Razor模板引擎工作原理及怎么调用外部方法演示
举报原因:
原因补充:

(最多只允许输入30个字)