为什么使用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; }
} }
效果
为什么使用Reazor的更多相关文章
随机推荐
- 切换用户身份su与sudo
普通用户切换到root用户的方式有:su和sudo. 1,su - (su为switch user,即切换用户的简写) 格式:su -l USERNAME(-l为login,即登陆的简写) -l可以将 ...
- Unity 菜单拓展
添加自定义菜单项 [MenuItem("test/item1 %g")] public static void haha() { Debug.Log("this is a ...
- is not writable or has an invalid setter method错误的解决
java中在配置spring时,遇到is not writable or has an invalid setter method的错误一般是命名方式的问题 需要写成private userInfoD ...
- Monkey测试结果分析【转】
转自[http://www.douban.com/note/257030241/] Monkey测试结果分析 一. 初步分析方法: Monkey测试出现错误后,一般的差错步骤为以下几步: 1. 找到是 ...
- 吴裕雄 python神经网络 花朵图片识别(10)
import osimport numpy as npimport matplotlib.pyplot as pltfrom PIL import Image, ImageChopsfrom skim ...
- web.xml中的load-on-startup
1)load-on-startup元素标记容器是否在启动的时候就加载这个servlet(实例化并调用其init()方法). 2)它的值必须是一个整数,表示servlet应该被载入的顺序 2)当值为0或 ...
- 学JS的心路历程 -非同步执行
JS是单线程的语言,也就是说同一时间只会执行一行程序,所以如果一段程序执行过久就会造成阻塞(blocking)的现象,必须等到它结束后才能执行下一段程序. 举个例子来说,如果我们今天要买便当,但是老板 ...
- 利用等概率Rand5产生等概率Rand3(转)
问题本身很明确,但不知道起个什么题目好,姑且先这么说吧. 问题描述:现在有一个叫做Rand5的函数,可以生成等概率的[0, 5)范围内的随机整数,要求利用此函数写一个Rand3函数(除此之外,不能再使 ...
- Java happen-before
下面是happens-before原则规则: 程序次序规则:一个线程内,按照代码顺序,书写在前面的操作先行发生于书写在后面的操作: 锁定规则:一个unLock操作先行发生于后面对同一个锁额lock操作 ...
- 2、CDH 搭建Hadoop在安装(安装Cloudera Manager,CDH和托管服务)
安装Cloudera Manager,CDH和托管服务 建议使用此过程为生产环境安装Cloudera Manager和CDH.对于非生产“易于安装”,请参阅安装概念证明群集. 在开始安装之前,请确保已 ...