自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

.NET MVC Razor也可以這樣玩!

開(kāi)發(fā) 后端
忙碌的工作總是占據(jù)了生活的大部分的時(shí)間!所以我的博客到現(xiàn)在還是寥寥的幾篇文章,技術(shù)是用來(lái)分享和學(xué)習(xí)的,對(duì)技術(shù)有不同的見(jiàn)解,大家都可以分享下,如果如下文章有問(wèn)題之處請(qǐng)各位指出來(lái),在這個(gè)閑下來(lái)的時(shí)間給大家說(shuō)說(shuō)mvc Razor除了在視圖上解析外,一樣可以這樣用。

忙碌的工作總是占據(jù)了生活的大部分的時(shí)間!所以我的博客到現(xiàn)在還是寥寥的幾篇文章,技術(shù)是用來(lái)分享和學(xué)習(xí)的,對(duì)技術(shù)有不同的見(jiàn)解,大家都可以分享下,如果如下文章有問(wèn)題之處請(qǐng)各位指出來(lái),在這個(gè)閑下來(lái)的時(shí)間給大家說(shuō)說(shuō)mvc Razor除了在視圖上解析外,一樣可以這樣用。

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

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

就這么簡(jiǎn)單你就可以不只在視圖頁(yè)面上使用Razor了,它完全支持動(dòng)態(tài)類(lèi)型,如下:

  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()); 

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

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

  1. //自定義模板  
  2.  public class MyTemplateBase<T> : TemplateBase<T>  
  3.  {  
  4.        public string GetStr()  
  5.         {  
  6.                return "流年莫逝";  
  7.         }  
  8. }  
  9.  
  10. //注冊(cè)自定義模板  
  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.         }  

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

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

按這種方法就可以解析了,Razor.Parse方法是TemplateService類(lèi)里面的一個(gè)虛方法,是支持自己重寫(xiě)的,所以在注冊(cè)的時(shí)候你繼承了這個(gè)TemplateService類(lèi),就是可以實(shí)現(xiàn)你想要的了!

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

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

責(zé)任編輯:林師授 來(lái)源: 博客園
相關(guān)推薦

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

2021-06-22 16:59:56

微軟.NETC# 軟件開(kāi)發(fā)

2019-01-29 10:00:59

GitHub開(kāi)源搜索

2024-06-13 08:19:08

Controller接口參數(shù)

2012-05-17 16:16:01

Linux系統(tǒng)游戲

2020-09-08 14:13:41

AI亞馬遜云科技DeepRacer

2022-05-25 08:42:32

sentinel流控規(guī)則

2024-05-17 09:37:26

format屬性Spring

2020-11-16 13:38:31

PostMessage

2021-07-28 06:10:47

拖拽設(shè)計(jì)器 transmat

2021-09-05 07:55:37

前端Emoji 表情

2024-08-06 09:51:21

SpringHTTPJSON

2022-08-21 14:00:11

消息中間件MQ

2013-12-16 11:40:15

Win9Windows 9概念圖

2021-10-17 23:46:06

Go項(xiàng)目版本號(hào)

2024-08-02 08:38:20

Controller接口地址

2016-09-29 17:48:32

騰訊云語(yǔ)音質(zhì)檢珍愛(ài)網(wǎng)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)