成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

.NET MVC Razor也可以這樣玩!

開發 后端
忙碌的工作總是占據了生活的大部分的時間!所以我的博客到現在還是寥寥的幾篇文章,技術是用來分享和學習的,對技術有不同的見解,大家都可以分享下,如果如下文章有問題之處請各位指出來,在這個閑下來的時間給大家說說mvc Razor除了在視圖上解析外,一樣可以這樣用。

忙碌的工作總是占據了生活的大部分的時間!所以我的博客到現在還是寥寥的幾篇文章,技術是用來分享和學習的,對技術有不同的見解,大家都可以分享下,如果如下文章有問題之處請各位指出來,在這個閑下來的時間給大家說說mvc Razor除了在視圖上解析外,一樣可以這樣用。

     在有些項目需求上或許需要根據模板生產靜態頁面,那么你一樣可以用Razor語法去直接解析你的頁面從而把解析的頁面生成靜態頁,首先介紹下RazorEngine,在nuget上可以直接引用到項目上,這個東西通俗的來講就是可以在任何地方解析razor語法,個人覺得要比 NVelocity靈活好用很多。在codeplex上有介紹,現在好像搬到Github上了,鏈接http://razorengine.codeplex.com/,***的版本在Github上,大家可以看看,使用上很方便,如下:

  1. string template = "Hello @Model.Name! Welcome to Razor!";  
  2.   string result = Razor.Parse(template, new { Name = "World" }); 

就這么簡單你就可以不只在視圖頁面上使用Razor了,它完全支持動態類型,如下:

  1. dynamic ViewBag = new DynamicViewBag();  
  2.  ViewBag.list = "流年莫逝";  
  3. string template = "Hello Word @ViewBag.list";  
  4. string result = Razor.Parse(template,null,ViewBag,Guid.NewGuid().ToString()); 

一樣可以解析出來,看源碼活著是VS的智能提示你可以看到Razor.Parse后面需要傳遞的參數類型,只要對號入座就行了,它是支持cache的,當然它的這種cache我個人理解的并不是那種數據緩存的cache,如上面dynamic類型的解析Razor.Parse我是演示用的Guid,但是你可以用其他的string字符,如果你下次預編譯模板的時候還是用的這個名字的話就會直接取cache里的模板來做解析,這樣減少了解析時間,這是我的個人理解,目前還沒有深入的去研究。

RazorEngine還支持自定義模板,如下代碼:

  1. //自定義模板  
  2.  public class MyTemplateBase<T> : TemplateBase<T>  
  3.  {  
  4.        public string GetStr()  
  5.         {  
  6.                return "流年莫逝";  
  7.         }  
  8. }  
  9.  
  10. //注冊自定義模板  
  11.  public class CustomTemplate : TemplateService  
  12.   {  
  13.         public CustomTemplate()  
  14.         {  
  15.             var Service = new RazorEngine.Configuration.TemplateServiceConfiguration();  
  16.             Service.BaseTemplateType = typeof(MyTemplateBase<>);  
  17.             var MyTemplate = new TemplateService(Service);  
  18.             Razor.SetTemplateService(MyTemplate);  
  19.         }  

簡單介紹下啊,上面那個是自定義的模板,里面你可以按你的需求寫相應的方法,這樣在解析的時候你一樣可以使用你的方法,比方我的是返回的字符串,你用@GetStr()一樣可以得到你的返回值,另外你的自定義模板一樣要繼承TemplateBase<T>,我看了它的源碼不知道為什么一樣要帶上一個泛型,想研究的可以自己看看,注冊模板后你就可以使用了,

  1. CustomTemplate service = new CustomTemplate();  
  2. return service.Parse(Content, null, ViewBag, Guid.NewGuid().ToString()); 

按這種方法就可以解析了,Razor.Parse方法是TemplateService類里面的一個虛方法,是支持自己重寫的,所以在注冊的時候你繼承了這個TemplateService類,就是可以實現你想要的了!

看到官網上有很多提問為什么不能用@Html.Raw()等這些方法,其實你要是仔細看源碼的話是可以支持的,只是換了個寫法你可以直接用@Raw()來進行輸出,就簡單介紹這么多吧,其實RazorEngine還有很多功能的,但是目前以上幾種完全夠解析頁面用了!

原文鏈接:http://www.cnblogs.com/liunianmoshi/p/3271670.html

責任編輯:林師授 來源: 博客園
相關推薦

2013-03-29 10:21:23

ASP.NETAjax

2010-12-07 09:38:15

ASP.NET MVC

2012-06-26 10:24:51

Asp.Net框架Razor

2011-01-19 11:17:36

2020-09-08 14:13:41

AI亞馬遜云科技DeepRacer

2019-01-29 10:00:59

GitHub開源搜索

2024-06-13 08:19:08

Controller接口參數

2012-05-17 16:16:01

Linux系統游戲

2020-11-16 13:38:31

PostMessage

2022-05-25 08:42:32

sentinel流控規則

2024-05-17 09:37:26

format屬性Spring

2021-06-22 16:59:56

微軟.NETC# 軟件開發

2021-07-28 06:10:47

拖拽設計器 transmat

2021-09-05 07:55:37

前端Emoji 表情

2022-08-21 14:00:11

消息中間件MQ

2024-08-06 09:51:21

SpringHTTPJSON

2013-12-16 11:40:15

Win9Windows 9概念圖

2024-08-02 08:38:20

Controller接口地址

2021-10-17 23:46:06

Go項目版本號

2016-09-29 17:48:32

騰訊云語音質檢珍愛網
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 久久国产视频网站 | 好好的日在线视频 | 日日夜精品视频 | 国产精品久久久久久久一区二区 | 国内精品视频在线 | 欧美一级片在线观看 | 久久国产成人午夜av影院武则天 | 永久网站 | 国产99热在线 | 免费h在线 | 性色av香蕉一区二区 | 日韩欧美专区 | www日本在线观看 | 日韩电影在线一区 | 亚洲精品中文字幕在线观看 | 亚洲国产成人精品女人久久久 | 日韩看片 | 一区二区三区四区av | 五月激情婷婷六月 | 国产综合精品 | 波多野结衣一区二区三区 | 一区在线视频 | 国产欧美在线 | 国产精品久久久久一区二区三区 | 久久福利电影 | 国产主播第一页 | 中文字幕一区二区三区在线观看 | 久久精品一区 | 国产精品日韩在线 | 欧美日韩在线播放 | 国产乱码精品1区2区3区 | 日本免费一区二区三区四区 | 国产精品久久久久久久久久久久 | 国产精品免费一区二区三区四区 | 国产精品资源在线 | 老头搡老女人毛片视频在线看 | 我要看免费一级毛片 | 欧美在线视频网 | 麻豆av在线 | 在线观看黄色大片 | 久久国产精品视频 |