如果我看Razor View Engine,那麼我會看到一個非常簡潔的語法,它並不特別與生成html相關聯。所以我想知道,在asp.net的「普通」.net環境中使用引擎之外的引擎是多麼容易,例如生成文本,代碼......是否可以在asp.net外部使用Razor View Engine
任何指針,示例,註釋或解釋都是受歡迎的。
如果我看Razor View Engine,那麼我會看到一個非常簡潔的語法,它並不特別與生成html相關聯。所以我想知道,在asp.net的「普通」.net環境中使用引擎之外的引擎是多麼容易,例如生成文本,代碼......是否可以在asp.net外部使用Razor View Engine
任何指針,示例,註釋或解釋都是受歡迎的。
這裏有兩個問題:
<tags>
來確定代碼和標記之間的轉換。您可以使用它來生成任何文本,但是當您的輸出與剃刀對您的意圖是什麼的假設不匹配時,您可能會遇到問題。因此,舉例來說,雖然這是(因爲<div>
標記的)有效剃刀代碼:
@if(printHello) {
<div>Hello!</div>
}
下面的代碼片斷是無效的(因爲你好仍然被視爲代碼!):
@if(printHello) {
Hello!
}
但是有一個特殊的<text>
標籤可以用來強制多行塊(<text>
標籤將不會被渲染)的過渡:
@if(printHello) {
<text>Hello!
Another line</text>
}
還有一個更短的語法來強制單行使用@:
轉變:
@if(printHello) {
@:Hello!
}
生成代碼或文本:你的意思是像T4模板:http://msdn.microsoft.com/en-us/library/bb126445.aspx或codesmith工具?
這需要upvotes因爲T4有與Razor相似,並且是一個實際的多用途代碼生成器,作爲Visual Studio中的一個功能提供 - 實質上它是一個通用的'Razor' – 2015-07-01 22:02:13
我的理解是T4模板只能在編譯時更改, .tt文件被轉換並保存爲.cs文件。在我的使用中,一個半技術用戶想要更新模板而不必重新構建應用程序。有沒有簡單的方法可以使用T4模板來實現? – daveb 2017-03-22 16:06:41
很可能,只要它生成的內容可以被解釋,就像CSHTML可以在運行時由Razor引擎一樣。你也可以通過編程觸發它來生成代碼,但編譯代碼必須由編譯器解析才能使用.... – 2017-03-27 19:39:52
檢查RazorEngine,它是建立在剃刀之上的微架構,可以讓你做到這一點。
在.net 4中定位應用程序時安裝此項目時出現問題,需要更新。 – 2014-06-24 13:08:29
不工作atm。我正在尋找另一種選擇。 – 2017-08-18 14:51:38
看看RazorTemplates庫。它比RazorEngine庫更輕量,它是線程安全的,並具有非常好的最小界面。
編譯和執行模板是兩行代碼那樣簡單:
var template = Template.Compile("Hello @Model.Name!");
Console.WriteLine(template.Render(new { Name = "World" }));
您是否突出了RazorTemplates b/c的線程安全性?此問題的其他建議解決方案之一是不是?我特別感興趣的是RazorEngine。 – 2012-11-29 19:43:33
這個項目還沒有更新很久。 – 2014-06-24 13:07:56
兩個RazorEngine和RazorTemplates已經在這裏提到的,但檢查出RazorMachine。您可以在非MVC應用程序簡單地指向(另一個)現有的MVC應用程序的〜/ Views文件夾,以發送正確的模型執行,並獲得兩行代碼渲染輸出:
var sb = new StringBuilder();
//RazorMachine magic:
//*tweets* is basically List<TwitterPost> - simple collection of custom POCO
//first param for rm.ExecuteUrl points to ~/Views folder, MVC style
var rm = new RazorMachine(htmlEncode: false);
ITemplate template = rm.ExecuteUrl("~/twitter/twitter", tweets);
//do whatever you want with result
sb.Append(template);
嗯,我正在考慮用它來生成電子郵件或即時IronPython代碼代。由於這些不使用標籤,因此最好查看其他選擇。感謝你的回答。 – Thomas 2010-09-03 07:23:47
@Thomas Razor在這些場景中應該可以做得很好,你只需要不時添加這些魔術''標籤或者使用'@:'''。一旦支持VS編輯器支持Razor語法,就可以很容易地判斷轉換髮生的時間。 –
marcind
2010-09-03 15:42:43