Bob*_*byA 5 c# handlebarshelper handlebars.net
使用Handlebars.Net,我想创建一个HandlebarsHelper,它将用<br>标签替换回车和换行符.它应该看起来像这样:
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);
});
Run Code Online (Sandbox Code Playgroud)
编译器(或resharper)告诉我它无法判断我是否正在尝试使用HandlebarsBlockHelper或HandlebarsHelper,而且我在任何一种情况下都缺少参数.
在 C# Regex 类的帮助下,它最终看起来像这样:
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);
});
Run Code Online (Sandbox Code Playgroud)
回答我的问题:
HandleBarsBlockHelper 提供了一种使用模板块调用助手的机制。然后块助手可以使用它选择的任何上下文调用该块零次或多次。查看Helpers的描述以获取更多信息(在底部您会看到一个标记为“了解更多:阻止 Helpers”的按钮)。
为了更好地理解参数对象列表,看看我如何在我的 HTML 模板中使用这个助手会有所帮助:
<div>
<p>{{{handleNewLines StringVariable}}}</p>
</div>
Run Code Online (Sandbox Code Playgroud)
其中“StringVariable”是我传递给使用 Handlebars.Compile() 创建的委托的 JSON 对象的成员