原因:类似于前边写的模板页,自己写了。还需要用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; }
} }

  

效果

 

为什么使用Reazor的更多相关文章

随机推荐

  1. ReactiveX 学习笔记(9)工具类操作符

    Observable Utility Operators 本文的主题为处理 Observable 的实用工具类操作符. 这里的 Observable 实质上是可观察的数据流. RxJava操作符(六) ...

  2. 强制停止ORACLE数据库

    操作环境 SuSE+Oracle11gR2 适用场景 shutdown immediate停止数据库失败 操作命令 1.kill掉oracle实例相关进程 2.清除oracle占用的共享内存段 ipc ...

  3. 360Top奢侈品演示站 - 纯手工纪念品

    一个纯手写的过程化编程商城项目,留作纪念. 360Top奢侈品演示站 http://360top.farwish.com

  4. 22.多线程.md

    目录 1.线程的创建和启动 1.1继承Thread类创建线程 1.2继承Runnable接口实现创建线程 1.3使用Callable和Future创建 2.控制线程 2.1 Thread类的join方 ...

  5. Hibernate学习笔记2.4(Hibernate的Id生成策略)

    通过设置告诉id该怎么设置. 1.通过xml方式 1.assigned 主键由外部程序负责生成,在 save() 之前必须指定一个.Hibernate不负责维护主键生成.与Hibernate和底层数据 ...

  6. puppet自动化运维

    Puppet实现自动化运维 一.案例分析 1.案例概述: 随着服务器数量的增多,系统管理员任务量也逐渐增加,这时就需要简洁的.强大的框架来完成系统管理任务为实现这一目的,我们将引入一批工具,这批工具是 ...

  7. 阿里云oss存储图片

    单线程版-上传网络流 import pymysql import oss2 import requests import logging # 添加日志 logging.basicConfig( lev ...

  8. RPN(region proposal network)之理解

    在faster-r-cnn 中,因为引入rpn层,使得算法速度变快了不少,其实rpn主要作用预测的是 “相对的平移,缩放尺度”,rpn提取出的proposals通常要和anchor box进行拟合回归 ...

  9. Java中的IO流(一)

    一,IO流的分类 A,按照操作的对象不同可分为字节流与字符流 B,按照流的方向不同可分为输入(指从外部存储设备拿文件到内存)流也叫读与输出(指从内存把文件写入到外部存储设备)流也叫写 注:字节流可以操 ...

  10. Vue.Draggable:基于 Sortable.js 的 Vue 拖拽组件使用中遇到的问题

    Sortable.js 介绍 https://segmentfault.com/a/1190000008209715 项目中遇到的问题: A - 我需要在项目的拖拽组件中,使用背景 1 - 想到的第一 ...