我正在尋找一種方法來重新使用我的MVC Razor視圖作爲客戶端呈現的JavaScript模板,並發現了將剃鬚刀視圖分析爲javascript函數的this library(Razor Client Template)。RazorTemplateEngine分析器產生不尋常的語法樹
它不會與Razor引擎版本2玩球,有點挖掘顯示這是因爲Razor引擎的語法樹已被徹底檢查。在嘗試修改事情時,我發現了RazorViewEngine解析器的一些奇怪結果。
我有一個非常簡單的看法,就像這樣:
@model Justis4.Models.EntityModel
<div>
@Model.PropertyOne
@Model.PropertyTwo
</div>
剃刀客戶端模板庫開始了與:
var host = new RazorEngineHost(newCSharpRazorCodeLanguage());
var engine = new RazorTemplateEngine(host);
var parserResults = engine.ParseTemplate(razorTemplate); //from string reader
var doc = parserResults.Document;
,然後熄滅,開始分析所產生的語法樹成javascript函數。
當我通過語法樹調試時,我看到一些奇怪的東西。據我瞭解,Razor引擎將視圖分解爲不同類型的「塊」和「跨度」。但如圖所示,頂部的模型聲明已被解析爲標記,而不是代碼。也有類似的怪異現象,因此,解析爲JavaScript的其餘部分失敗。