2016-04-08 44 views
3

使用Handlebars.Net,我想創建一個HandlebarsHelper,它將用<br>標籤替換回車符和換行符。它應該是這個樣子:創建HandleBars助手服務器端的語法是什麼?

string pattern = @"/(\r\n|\n|\r)/gm"; 
string replacement = "<br>"; 
Regex rgx = new Regex(pattern); 

Handlebars.RegisterHelper("link_to", (string text) => 
{ 
    text = rgx.Replace(text, replacement); 
}); 

編譯器(或ReSharper的)告訴我,它不能告訴,如果我試圖用HandlebarsBlockHelper或HandlebarsHelper,和我丟失的參數在任何情況下。

  1. 這兩者有什麼區別?
  2. 我似乎無法找到任何這方面的文檔。是否有上述兩個對象以及HelperOptions的文檔,以及如何使用TextWriter,dymanic上下文和參數對象列表?

回答

2

它結束了看起來像這樣從C#正則表達式類有點幫助:

var newlineRegx = new Regex("(\\r\\n|\\n|\\r)",RegexOptions.Multiline); 

Handlebars.RegisterHelper("handleNewLines", (output, context, arguments) => 
{ 
    var str = newlineRegx.Replace((string)arguments[0], "<br>"); 
    output.Write(str); 
}); 

回答我的問題:

  1. HandleBarsBlockHelper提供了一種機制調用傭工一塊模板。塊助手然後可以使用它選擇的任何上下文零次或多次調用該塊。查看Helpers的描述以獲取更多信息(底部您會看到一個標籤爲「Learn More:Block Helpers」的按鈕)。

    • TextWriter.Write是如何輸出轉換後的文本。
    • 上下文將基本上是您傳入使用Handlebars.Compile()創建的委託的JSON對象。
    • 參數對象名單包含沿着側出現你定義的幫手,這你會在你的HTML模板中使用的參數

爲了更好地理解參數對象列表,它會幫忙看看我是如何在我的HTML模板中使用這個助手:

<div> 
    <p>{{{handleNewLines StringVariable}}}</p> 
</div> 

其中「StringVariable」是JSON對象我傳遞給我Handlebars.Compile()創建的代表中的一員

相關問題