asp.net实现在非MVC中使用Razor模板引擎的方法

本文实例讲述了asp.net实现在非MVC中使用Razor模板引擎的方法。分享给大家供大家参考。具体分析如下:

模板引擎介绍

Razor、Nvelocity、Vtemplate,Razor一般在MVC项目中使用,这里介绍在非MVC项目中的用法。
如何在非MVC中使用Razor模板引擎
借助于开源的RazorEngine,我们可以在非asp.net mvc项目中使用Razor引擎,甚至在控制台、WinForm项目中都可以使用Razor(自己开发代码生成器)

如何使用Razor

环境搭建:

① 添加引用RazorEngine.dll
② 创建cshtml

新建一个html,改名为cshtml。注意:通过 添加--html页再改成cshtml的方式打开是么有自动提示的,必须关掉该文件重新打开。推荐使用,添加--新建项--html页在这里直接改成cshtml创建cshtml文件,直接可用自动提示。

开始使用:

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

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

<!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. 在一般处理程序中使用Razor:
Razor对象会使用Parse方法将读取到的cshtml解析为一个程序集,再生成html。

public void ProcessRequest(HttpContext context)
{
 context.Response.ContentType = "text/html";
 string fullPath=context.Server.MapPath(@"~/Razordemo/Razor1.cshtml");
 //拿到cshtml文件路径
 string cshtml=File.ReadAllText(fullPath);//得到文件内容
 string html = Razor.Parse(cshtml);//解析cshtml文件解析得到html
 context.Response.Write(html);
}

3. 如何在cshtml文件读取对象的值

Razor.Parse()方法的另一个重载就是传进一个Model对象,在cshtml文件中通过Model就可以点出来对象的属性。

在一般处理程序中解析:

Dog dog = new Dog();
dog.Id = 100;
dog.Height = 120;
string html = Razor.Parse(cshtml, dog);
context.Response.Write(html);

在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>
 <h1>狗狗信息:</h1>
 <h1>Id:@Model.Id</h1>
 <h1>身高:@Model.Height</h1>
</body>
</html>

希望本文所述对大家的asp.net程序设计有所帮助。

时间: 2015-06-10

asp.net模板引擎Razor中cacheName的问题分析

本文实例讲述了asp.net模板引擎Razor中cacheName的问题.分享给大家供大家参考.具体如下: 一.为什么使用cacheName 使用cacheName主要是考虑到Razor.Parse()每解析一次都会动态创建一个程序集,如果解析量很大,就会产生很多程序集,大量的程序集调用会造成程序非常慢. 举个例子: 如果编译1000次,编译速度就会很慢. static void Main(string[] args) { string cshtml = File.ReadAllText(@"E

教你如何在 Javascript 文件里使用 .Net MVC Razor 语法

相信大家都试过在一个 View 里嵌套使用 javascript,这时就可以直接使用 Razor 语法以调用 .NET 的一些方法.如以下代码嵌套在一个 Razor 的 View 里: <script> var currDate = '@DateTime.Now'; //直接调用.NET的方法 console.log(currDate) </script> 但另一种情况是,如果我想在一个独立的 JS 文件里使用 Razor,那以上的方法可行不通,因为MVC不会直接解释JS文件,只有

使用Asp.net Mvc3 Razor视图方式扩展JQuery UI Widgets方法介绍

JQuery UI Widgets是本人非常喜欢的一套前端JS组件,日常开发中基于原有的jquery ui widget js代码进行开发,需要写非常多的重复代码,同时一些现有组件无法满足需求的情况下,需要对现有组件进行扩展,本文使用一套基于jquery ui 的扩展js组件---jtable (http://www.jtable.org),包含了基本的列表和编辑窗口,比起jqGrid,jquery easyui grid或者extjs grid,jtable的代码非常简洁.对于grid功能要求

Razor模板引擎简单介绍

一.工具下载: 程序集下载地址:链接: http://pan.baidu.com/s/1hsGJV5y 密码: pfja 适用于visual studio2015程序集下载地址:链接: http://pan.baidu.com/s/1nvn31IL 密码: 4v7h 如果在使用VS2015等更高版本的时候出现"File not Found Exception Cannot Load System.Web.Razor.dll Version=2.0.0"这样的错误,请换用下面附件中的程序

ASP.NET MVC使用RazorEngine解析模板生成静态页

简述 Razor是ASP.NET MVC 3中新加入的技术,以作为ASPX引擎的一个新的替代项.在早期的MVC版本中默认使用的是ASPX模板引擎,Razor在语法上的确不错,用起来非常方便,简洁的语法与.NET Framework 结合,广泛应用于ASP.NET MVC 项目. 我们在很多项目开发中会常常用到页面静态化,页面静态化有许多方式,最常见的就是类似很多PHP CMS种使用的 标签替换的方式(如:帝国CMS.EcShop等),还有很多都是伪静态,伪静态我们就不做过多解释,通过路由或Url

Asp.net MVC中Razor常见的问题与解决方法总结

前言 最近在学习Asp.net MVC Razor,在使用中遇到了不少的问题,所以想着总结下来,没有经验的童鞋就是这样磕磕碰碰出来的经验.话不多说,来一起看看详细的介绍: 一.Datatype的错误提示消息无法自定义 这也许是Asp.net MVC的一个Bug.ViewModel中定义了DataType为Date字段: [Required(ErrorMessage = "Birthday must be input!")] [DataType(DataType.Date, ErrorM

asp.net模板引擎Razor调用外部方法用法实例

本文实例讲述了asp.net模板引擎Razor调用外部方法用法.分享给大家供大家参考.具体如下: 首先使用Razor的步骤:读取cshtml.解析cshtml同时指定cacheName. 而这个步骤是重复的,为了遵循DRY原则,将这段代码封装为一个RazorHelper()方法 public class RazorHelper { public static string ParseRazor(HttpContext context, string csHtmlVirtualPath, obje

ASP.NET Razor模板引擎中输出Html的两种方式

本文实例讲述了ASP.NET Razor模板引擎中输出Html的两种方式.分享给大家供大家参考,具体如下: Razor中所有的Html都会自动编码,这样就不需要我们手动去编码了(安全),但在需要输出Html时就是已经转义过的Html文本了,如下所示: @{ string thisTest = "<span style=\"color:#f00;\">qubernet</span>"; } @thisTest; 这样在页面输出的文本就是:<

NopCommerce架构分析之(六)自定义RazorViewEngine和WebViewPage

系统中对Razor的支持包括两部分,其中之一就是自定义RazorViewEngine 一.自定义RazorViewEngine 在Global.asax.cs的Application_Start方法中,注册了自定义视图引擎: //remove all view engines ViewEngines.Engines.Clear(); //except the themeable razor view engine we use ViewEngines.Engines.Add(new Themea

ASP.NET MVC4 Razor模板简易分页效果

一.无数据提交 第一步,建立一个 Controller命名为PageIndex的空控制器,自定义一个方法如下: public ActionResult PageIndex(string action, string controller, int currentPage, int pageCount) { //int count = db.Product.Count(); ViewBag.PageCount = pageCount;//从操作中获取总数据页数将传入分页视图页面 ViewBag.C

asp.net Mvc4 使用ajax结合分页插件实现无刷新分页

本文为在mvc4中使用ajax实现无刷新分页demo,记录一下. 解决方案思想:页面数据的初始加载和按页加载都是通过ajax来进行,页面分页链接点击后利用ajax技术发送当前页码到后端控制器,后端控制器根据当前页码和设置的pageSize从数据库中取出对应页的数据.后端控制器处理完后利用PartialView方法把数据返回到分部视图中,利用ViewBag来返回总记录数和pageSize.ajax通过回调函数把控制器返回的分部视图内容加载到主视图中显示. 说明:分页具体的分页导航和样式使用了kkp

asp.net mvc4 mysql制作简单分页组件(部分视图)

在开始做mysql分页功能组件前,便设定的是要有一定可复用性.先在项目里Views文件夹下右键新建名为_PaginationComponent.cshtml,这里html及css我采用的bootstrap分页组件,这可以参考http://v3.bootcss.com/components/. 先将生成项目效果截图呈上: 这里有需要预先知道的,是mysql分页查询与mssql分页查询实现不同点在于,mysql支持limit语句,limit格式为 limit pageIndex*pageSize,p

Bootstrap与KnockoutJs相结合实现分页效果实例详解

KnockoutJS是一个JavaScript实现的MVVM框架.非常棒.比如列表数据项增减后,不需要重新刷新整个控件片段或自己写JS增删节点,只要预先定义模板和符合其语法定义的属性即可.简单的说,我们只需要关注数据的存取. 一.引言 由于最近公司的系统需要改版,改版的新系统我打算使用KnockoutJs来制作Web前端.在做的过程中,遇到一个问题--如何使用KnockoutJs来完成分页的功能.在前一篇文章中并没有介绍使用KnockoutJs来实现分页,所以在这篇文章中,将补充用Knockou

.NET中的repeater简介及分页效果

Repeater控件是一个数据绑定容器控件,它能够生成各个项的列表,并可以使用模板定义网页上各个项的布局.当该页运行时,该控件为数据源中的每个项重复此布局. 配合模板使用repeater控件 若要使用repeater控件,需创建定义控件内容布局的模板.模板可以包含标记和控件的任意组合.如果未定义模板,或者模板都不包含元素,则当应用程序运行时,该控件不显示在页面上. ItemTemplate : 含要为数据源中每个数据项都要呈现一次的 HTML 元素和控件. AlternatingItemTemp

详解ASP.NET MVC 解析模板生成静态页(RazorEngine)

简述 Razor是ASP.NET MVC 3中新加入的技术,以作为ASPX引擎的一个新的替代项.在早期的MVC版本中默认使用的是ASPX模板引擎,Razor在语法上的确不错,用起来非常方便,简洁的语法与.NET Framework 结合,广泛应用于ASP.NET MVC 项目. 我们在很多项目开发中会常常用到页面静态化,页面静态化有许多方式,最常见的就是类似很多PHP CMS种使用的 标签替换的方式(如:帝国CMS.EcShop等),还有很多都是伪静态,伪静态我们就不做过多解释,通过路由或Url

ASP.NET MVC4入门教程(一):入门介绍

前言 本教程将为您讲解使用微软的Visual Studio Express 2012或Visual Web Developer 2010 Express Service Pack 1 来建立一个ASP.NET MVC4 Web应用程序所需要的基础知识.建议您使用Visual Studio 2012,你将不再需要安装任何组件,来完成此教程.如果您使用的是Visual Studio 2010,您必须安装下面的组件.您可以通过点击下面的链接,来安装所需的所有组件: Visual Studio Web

基于Asp.Net MVC4 Bundle捆绑压缩技术的介绍

很高兴,最近项目用到了Asp.Net MVC4 + Entity Framework5,发现mvc4加入了Bundle.Web API等技术,着实让我兴奋,以前是用第三方的,这里主要说说Bundle技术. 很多大网站都没有用Bundle技术造成很多资源浪费与性能的牺牲,别小瞧 用上了你会发现他的好处: 将多个请求捆绑为一个请求,减少服务器请求数 没有使用Bundle技术,debug下看到的是实际的请求数与路径 使用Bundle技术,并且拥有缓存功能调试设置为Release模式并按F5或修改web