如何用RazorEngine在ASP.NET MVC中解析模板高效生成长尾关键词静态页面?
- 内容介绍
- 文章标签
- 相关推荐
本文共计1167个文字,预计阅读时间需要5分钟。
Razor是ASP.NET MVC 3中新增的技术,作为ASPX模板引擎的一个新替代项。早期MVC版本中,默认使用的是ASPX模板引擎。Razor在语法上准确无误,使用起来非常方便,简洁的语法与.NET Framework紧密结合。
简述
Razor是ASP.NET MVC 3中新加入的技术,以作为ASPX引擎的一个新的替代项。在早期的MVC版本中默认使用的是ASPX模板引擎,Razor在语法上的确不错,用起来非常方便,简洁的语法与.NET Framework 结合,广泛应用于ASP.NET MVC 项目。
我们在很多项目开发中会常常用到页面静态化,页面静态化有许多方式,最常见的就是类似很多PHP CMS种使用的 标签替换的方式(如:帝国CMS、EcShop等),还有很多都是伪静态,伪静态我们就不做过多解释,通过路由或Url重写来实现就可以了。Razor为我们提供了更加方便的模板解析方式,任何东西都是两方面的,技术也是如此,Razor解析模板虽然更加方便、简洁,但是对于模板制作人员来说也是有一定的技术要求,或者对于开发一套模板制作功能来说,考虑的要更多一些。我们不再去探究这些问题,我们更注重哪种技术更容易、更方便、更好的满足我们项目的需求。
如何使用RazorEngine
今天来简单介绍一下如何使用RazorEngine解析模板生成静态页面,RazorEngine它是基于微软的Razor之上,包装而成的一个可以独立使用的模板引擎。也就是说,保留了Razor的模板功能,但是使得Razor脱离于Asp.net MVC,能够在其它应用环境下使用,项目地址:github.com/Antaris/RazorEngine
首先我们去codeplex上下两个需要的dll razorengine.codeplex.com
看到网上很多介绍RazorEngine的基础用法的,讲解的都比较详细,对于RazorEngine运行原理很清晰,我们在这里就不重复介绍了。写这篇文章是对于很多新手同学来说比较喜欢“拿来主义”,基本的用法原理都能看懂,但是如何应用到项目中还是有些不是很清晰,我们只讲讲如何在项目中运用。
本文分为两部分:第一个部分,基本的单数据模型模板解析;第二部分,面向接口的多数据模型模板解析
第一个部分 基本的单数据模型模板解析
一、我们创建一个MVC项目,并且添加上面的两个DLL引用,然后我们新建一个简单的文章类
public class Articles { /// <summary> /// 文章ID /// </summary> public int Id { get; set; } /// <summary> /// 文章标题 /// </summary> public string Title { get; set; } /// <summary> /// 文章内容 /// </summary> public string Content { get; set; } /// <summary> /// 作者 /// </summary> public string Author { get; set; } /// <summary> /// 发布时间 /// </summary> public DateTime CreateDate { get; set; } }
二、我们新建一个Razor的Html模板
<!DOCTYPE html> <html xmlns="www.w3.org/1999/xhtml"> <head> <meta www.springframework.net"> <description>Spring注入Service,容器指向本层层封装的接口</description> <object id="Service.ArticleManage" type="Service.ArticleManage,Service" singleton="false"> </object> <object id="Service.ColumnManage" type="Service.ColumnManage,Service" singleton="false"> </object> <object id="Service.CompanyManage" type="Service.CompanyManage,Service" singleton="false"> </object> </objects>
五、我们分别初始化一个文章类、一个公司类(没有管理数据表,它下面没有文章列表 栏目模型我就不初始化了,怎么输出列表 大家可以参考下 栏目模板)
public class HomeController : Controller { /// <summary> /// 声明一下注入接口 /// </summary> public IArticleManage ArticleManage = Spring.Context.Support.ContextRegistry.GetContext().GetObject("Service.ArticleManage") as IArticleManage; public ICompanyManage CompanyManage = Spring.Context.Support.ContextRegistry.GetContext().GetObject("Service.CompanyManage") as ICompanyManage; public IColumnManage ColumnManage = Spring.Context.Support.ContextRegistry.GetContext().GetObject("Service.ColumnManage") as IColumnManage; public ActionResult Index() { //初始化一个文章数据模型 var entityArticle = new Domain.Articles() { Id = 1, Title = "这里是文章标题", Content = "<span style=\"color:red;\">这里是文章内容</span>", Author = "张三", CreateDate = DateTime.Now }; //初始化一个公司数据模型 var entityCompany = new Domain.Company() { Id = 1, CompanyName = "这里是公司名称", CompanyTel = "公司电话", ContectUser = "张三", CreateDate = DateTime.Now }; //调用方法生成静态页面 ArticleManage.CreateStaticPage(Server.MapPath("/Templates/Temp_article.html"), Server.MapPath("/Pages/news/" + DateTime.Now.ToString("yyyyMMddHHmmss") + "1.html"), entityArticle); CompanyManage.CreateStaticPage(Server.MapPath("/Templates/Temp_company.html"), Server.MapPath("/Pages/news/" + DateTime.Now.ToString("yyyyMMddHHmmss") + "2.html"), entityCompany); return View(); } public ActionResult About() { ViewBag.Message = "Your application description page."; return View(); } public ActionResult Contact() { ViewBag.Message = "Your contact page."; return View(); } }
六、这是测试的简单的文章模板、公司模板和栏目模板
<!DOCTYPE html> <html xmlns="www.w3.org/1999/xhtml"> <head> <meta www.w3.org/1999/xhtml"> <head> <meta www.w3.org/1999/xhtml"> <head> <meta yuangang.cnblogs.com
本文共计1167个文字,预计阅读时间需要5分钟。
Razor是ASP.NET MVC 3中新增的技术,作为ASPX模板引擎的一个新替代项。早期MVC版本中,默认使用的是ASPX模板引擎。Razor在语法上准确无误,使用起来非常方便,简洁的语法与.NET Framework紧密结合。
简述
Razor是ASP.NET MVC 3中新加入的技术,以作为ASPX引擎的一个新的替代项。在早期的MVC版本中默认使用的是ASPX模板引擎,Razor在语法上的确不错,用起来非常方便,简洁的语法与.NET Framework 结合,广泛应用于ASP.NET MVC 项目。
我们在很多项目开发中会常常用到页面静态化,页面静态化有许多方式,最常见的就是类似很多PHP CMS种使用的 标签替换的方式(如:帝国CMS、EcShop等),还有很多都是伪静态,伪静态我们就不做过多解释,通过路由或Url重写来实现就可以了。Razor为我们提供了更加方便的模板解析方式,任何东西都是两方面的,技术也是如此,Razor解析模板虽然更加方便、简洁,但是对于模板制作人员来说也是有一定的技术要求,或者对于开发一套模板制作功能来说,考虑的要更多一些。我们不再去探究这些问题,我们更注重哪种技术更容易、更方便、更好的满足我们项目的需求。
如何使用RazorEngine
今天来简单介绍一下如何使用RazorEngine解析模板生成静态页面,RazorEngine它是基于微软的Razor之上,包装而成的一个可以独立使用的模板引擎。也就是说,保留了Razor的模板功能,但是使得Razor脱离于Asp.net MVC,能够在其它应用环境下使用,项目地址:github.com/Antaris/RazorEngine
首先我们去codeplex上下两个需要的dll razorengine.codeplex.com
看到网上很多介绍RazorEngine的基础用法的,讲解的都比较详细,对于RazorEngine运行原理很清晰,我们在这里就不重复介绍了。写这篇文章是对于很多新手同学来说比较喜欢“拿来主义”,基本的用法原理都能看懂,但是如何应用到项目中还是有些不是很清晰,我们只讲讲如何在项目中运用。
本文分为两部分:第一个部分,基本的单数据模型模板解析;第二部分,面向接口的多数据模型模板解析
第一个部分 基本的单数据模型模板解析
一、我们创建一个MVC项目,并且添加上面的两个DLL引用,然后我们新建一个简单的文章类
public class Articles { /// <summary> /// 文章ID /// </summary> public int Id { get; set; } /// <summary> /// 文章标题 /// </summary> public string Title { get; set; } /// <summary> /// 文章内容 /// </summary> public string Content { get; set; } /// <summary> /// 作者 /// </summary> public string Author { get; set; } /// <summary> /// 发布时间 /// </summary> public DateTime CreateDate { get; set; } }
二、我们新建一个Razor的Html模板
<!DOCTYPE html> <html xmlns="www.w3.org/1999/xhtml"> <head> <meta www.springframework.net"> <description>Spring注入Service,容器指向本层层封装的接口</description> <object id="Service.ArticleManage" type="Service.ArticleManage,Service" singleton="false"> </object> <object id="Service.ColumnManage" type="Service.ColumnManage,Service" singleton="false"> </object> <object id="Service.CompanyManage" type="Service.CompanyManage,Service" singleton="false"> </object> </objects>
五、我们分别初始化一个文章类、一个公司类(没有管理数据表,它下面没有文章列表 栏目模型我就不初始化了,怎么输出列表 大家可以参考下 栏目模板)
public class HomeController : Controller { /// <summary> /// 声明一下注入接口 /// </summary> public IArticleManage ArticleManage = Spring.Context.Support.ContextRegistry.GetContext().GetObject("Service.ArticleManage") as IArticleManage; public ICompanyManage CompanyManage = Spring.Context.Support.ContextRegistry.GetContext().GetObject("Service.CompanyManage") as ICompanyManage; public IColumnManage ColumnManage = Spring.Context.Support.ContextRegistry.GetContext().GetObject("Service.ColumnManage") as IColumnManage; public ActionResult Index() { //初始化一个文章数据模型 var entityArticle = new Domain.Articles() { Id = 1, Title = "这里是文章标题", Content = "<span style=\"color:red;\">这里是文章内容</span>", Author = "张三", CreateDate = DateTime.Now }; //初始化一个公司数据模型 var entityCompany = new Domain.Company() { Id = 1, CompanyName = "这里是公司名称", CompanyTel = "公司电话", ContectUser = "张三", CreateDate = DateTime.Now }; //调用方法生成静态页面 ArticleManage.CreateStaticPage(Server.MapPath("/Templates/Temp_article.html"), Server.MapPath("/Pages/news/" + DateTime.Now.ToString("yyyyMMddHHmmss") + "1.html"), entityArticle); CompanyManage.CreateStaticPage(Server.MapPath("/Templates/Temp_company.html"), Server.MapPath("/Pages/news/" + DateTime.Now.ToString("yyyyMMddHHmmss") + "2.html"), entityCompany); return View(); } public ActionResult About() { ViewBag.Message = "Your application description page."; return View(); } public ActionResult Contact() { ViewBag.Message = "Your contact page."; return View(); } }
六、这是测试的简单的文章模板、公司模板和栏目模板
<!DOCTYPE html> <html xmlns="www.w3.org/1999/xhtml"> <head> <meta www.w3.org/1999/xhtml"> <head> <meta www.w3.org/1999/xhtml"> <head> <meta yuangang.cnblogs.com

