razor是asp.net mvc 3中新加入的技術,以作為aspx引擎的乙個新的替代項。簡潔的語法與.net framework 結合,廣泛應用於asp.net mvc 專案。razor pad是乙個編輯razor指令碼的工具,脫離於asp.net 和visual studio。
微軟已經有一套模板引擎t4,在設計asp.net mvc 3時又設計一套模板引擎razor,對開發者而言是多一種選擇,但同時也增加學習成本,至今我都沒有時間和精力將code smith的模板轉化為t4的模板。
razor 從模板到.net **
以cshtml為字尾名的為razor模板,可以混合指令碼語言和html**,以呈現為asp.net page頁面。
@foreach(var post in posts)razor引擎分析上面的指令碼,產生如下所示的xml文字片段
\r\n\t以空格或是@作為區域(block)的分割符,將razor解析成乙個表示式樹。@在razor模板中的用法相當靈活,可以用於表示式的求值,或是定義**塊。@
foreach(var post in posts)
\r\n
然後產生.net**,上面的指令碼,會產生如下的.net**型別
namespace razor最後,應用codedom api編譯上面的**,呼叫execute方法輸出結果。public override void execute()
writeliteral("\r\n
"); }
}}
razor api
一開始接觸這項技術時,以為是asp.net mvc的乙個開源專案,接觸之後才知道它是.net framework api中的型別,幾年沒有做web開發,asp.net技術發展的確實很快。
system.web.razor.parser.razorparser
razorparser用於解析指令碼,但是它對html,cs,vb指令碼一無所知。markupparser用於解析html標記,csharpcodeparser用於解析包含c#**的標記,相應的vbcodeparser則用於解析包含vb指令碼的標記,
system.web.razor.generator.razorcodegenerator
根據傳入的markup parser,產生**。與parser相似,它也有二個與標記語言相關的型別,csharprazorcodegenerator 和vbrazorcodegenerator,用於處理標記包含的指令碼。
system.web.razor.razorenginehost
system.web.razor.razortemplateengine
引擎宿主,用於接受標記指令碼,產生.net 型別的**。
把上面的內容綜合起來,寫乙個例子程式,來看這些api的用法。
建立指令碼宿主
var language = new csharprazorcodelanguage();新增razor指令碼引擎,讀取標記(markup)檔案var host = new razorenginehost(language) ;
razortemplateengine engine = new razortemplateengine(host);編譯標記檔案生成的型別,生成code dom 指令碼generatorresults razorresult = engine.generatecode("c:\\script.txt");
compilerresults compilerresults =執行生成的程式集型別,獲取結果new csharpcodeprovider()
.compileassemblyfromdom(
new compilerparameters(/*...*/),
razorresult.generatedcode
);
var template = (customtemplatebase)activator.createinstance(「programmingrazor.demotemplate」);razor pad程式的功能,也是用的這個基本思路來展來的。template.execute();
razor pad是乙個開放原始碼的程式,你可以從**中獲取它的源**。
Razor模板引擎
注 visual studio2010及以下是不支援razor的 如果在使用vs2015等更高版本的時候出現 file not found exception cannot load system.web.razor.dll version 2.0.0 這樣的錯誤,請換用下面附件中的程式集把舊的ra...
Razor 模板引擎的使用
安裝razor的模板引擎,通過vs的 擴充套件管理器 查詢 razorengine 並安裝。安裝的dll包括 razorengine.dll 和 system.web.razor.dll 主要使用razorengine.razor 類下的靜態方法parse string razortemplate,...
Razor模板引擎(C 版)語法
1 簡介 razor 是一種標記語法,可以讓您將基於伺服器的 visual basic 和 c 嵌入到網頁中。基於伺服器的 可以在網頁傳送給瀏覽器時,建立動態 web 內容。當乙個網頁被請求時,伺服器在返回頁面給瀏覽器之前先執行頁面中的基於伺服器的 通過伺服器的執行,能執行複雜的任務,比如進入資料庫...