Razor模板引擎

原创 2015年07月08日 17:21:20

为什么使用Reazor

原因:类似于前边写的模板页,自己写了。还需要用replace来替换成自己想要的变量。。

常见的模板引擎:Razor、Nvelocity、Vtemplate。 Razor有VS自动提示,而且有助于学习asp.net mvc。(Nvelocity、Vtemplate自行学习)

  1. Nvelocity。Vemplate 语法在C#中没有自动提示。但是用着非常方便的

2.借助于开源的RazorEngine,我们可以在非asp.net mvc项目中使用Razor引擎,甚至在控制台、WinForm项目中都可以使用Razor(自己开发代码生成器)

3.在非mvc项目中创建Razor文件(cshtml ,可以利用自动提示)的方法,新建一个html,改名为cshtml。(需要重新打开,才有智能提示

4.Razor中@后面跟表达式表示在这个位置输出表达式的值,模板中Model为传递给模板的对象。

5.@{}中为C#代码,C#代码还可以和html代码混排

6.由于不是在MVC项目中,所以无法使用@Html.DropDownList、@Url.Encode()等。

RazorEngine(c#语言写的)是微软做的一个开源的模板引擎,不是简单的在asp.net MVC中用,其他地方也是可以使用的。

自己写个cshtml 步骤:
1。项目名字–右键—添加—新建–Razor.cshtml会有自动提示的。(推荐这种用法

<!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>
      <ul>
    @{ 

        for (int i = 0; i < 10; i++)
        {
            <li>@i</li>;
        }        
     }

       </ul>

</body>
</html>

2。添加对RazorEngine的引用(1.放到项目的lib文件夹中,2.右键–引用–添加引用–浏览—打开该项目的lib文件,选择RazorEngine.dll文件即可!)

3。添加一般处理程序Razor1.ashx

using RazorEngine;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Web;

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

        public void ProcessRequest(HttpContext context)
        {
            context.Response.ContentType = "text/html";//1。修改为html文本类型
            //2.获取模板页的路径
            string fullPath = context.Server.MapPath("~/Razor.cshtml");

            //3.读取出模板页中的内容
            string cshtml = File.ReadAllText(fullPath);

            //4.使用Razo的Parse方法转化为html文本信息
            string html = Razor.Parse(cshtml);

            //5.输出到浏览器端
            context.Response.Write(html);
        }

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

修改Razor也可以读取“类”中数据,“数据库中的字段”

using RazorEngine;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Web;

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

        public void ProcessRequest(HttpContext context)
        {
            context.Response.ContentType = "text/html";//1。修改为html文本类型
            //2.获取模板页的路径
            string fullPath = context.Server.MapPath("~/Razor.cshtml");

            //3.读取出模板页中的内容
            string cshtml = File.ReadAllText(fullPath);

            /*
            //4.使用Razo的Parse方法转化为html文本信息
            string html = Razor.Parse(cshtml);
             */

            //拓展:怎么将变量传递到模板页cshtml中呢?
            //使用Razor的第二个方法
            //假设从数据库中读取的变量 name, age

            /*
            int age = 9;
            string name = "rupeng";
            //使用匿名类
            //var model = new { Age=age,Name=name };
            //string html = Razor.Parse(cshtml, model);

            //简化写
            string html = Razor.Parse(cshtml, new { Age=age,Name=name});

            */
            Dog dog = new Dog();
            dog.Id = 18;
            dog.Name = "哮天犬";
            string html = Razor.Parse(cshtml,dog);




            //5.输出到浏览器端
            context.Response.Write(html);
        }

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

    public class Dog
    { 
        public int Id{ get; set; }
        public string Name { get; set; }
    }


}

效果

这里写图片描述
这里写图片描述
这里写图片描述

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

相关文章推荐

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

工作原理:RazorEngine引擎就是将cshtml模板文件进行了字符串的拼接,然后,再封装为一个程序集。。。再通过一般处理程序,进行调用。。下面来封装一个方法。来简化上一节内容的操作; 1.获...

百度CSDN移动开发资源 共享

http://yun.baidu.com/xcloud/csdn/pan/disk/home#dir 百度CSDN移动开发资源 共享

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

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

Razor模板解密

RazorEngine将模板cshtml编译成了。一个程序集,每次编译运行,都会产生一个程序集; 可以用一个控制台程序打印出来,生成的“动态程序集“的名字(动态程序集是不能打印出磁盘中的位置的)us...

Mvc示例之四Razor模板(一)

Razor模板是Mvc3开始引用的模板,是Mvc开发推荐模板。本节主要介绍Mvc模板及局部页使用、Razor语法,下一节介绍MvcHelper用法并通过一个示例详细讲解Razor模板前后台传值。 Mv...

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

RazorEngine是什么,可以用来做什么就不多介绍了,网上的说明还是很多的。 但网上大多的示例都是2.0版本的,RazorEngine的3.7版本还是改动很大的,有必要做下简单的记录。 可通过nu...

使用Razor拼接一个CheckBox标签

为什么不在cshtm模板页中直接写一个select标签呢? @{ for(int i=0;i<Model.Count;i++) ...

自己写一个Raw方法

遇到的的问题 如果在RPcshtmHelper的类中写一个返回值类型是 ‘ string ’类型的方法 public static string Test3() { ...

c#使用 VTemplate模板引擎制作html报表

一、新建一个c#窗体项目,命名为VT 二、首先制作一个html模板如下,命名为Untitled-2.html 无标题文档 序号 ...

利用RazorEngine更加直观的格式化字符串

在.net中,我们可以使用string.Format函数来格式化字符串,一个简单的示例如下:     string template = "Hello {0}! Welcome to C#!";...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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