2016-04-08 19 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()创建的代表中的一员

相关问题