c# - 创建 HandleBars 助手服务器端的语法是什么?

标签 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);
});

编译器(或 resharper)告诉我它无法判断我是在尝试使用 HandlebarsBlockHelper 还是 HandlebarsHelper,并且在这两种情况下我都缺少参数。

  1. 两者有什么区别?
  2. 我似乎找不到关于这些的大量文档。是否有关于上述两个对象以及 HelperOptions 的文档,以及如何使用 TextWriter、动态上下文和参数对象列表?

最佳答案

在 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);
});

回答我的问题:

  1. HandleBarsBlockHelper 提供了一种使用模板 block 调用助手的机制。然后 block 助手可以使用它选择的任何上下文调用该 block 零次或多次。查看 Helpers 的说明了解更多信息(在底部,您会看到一个标有“了解更多:阻止助手”的按钮)。

    • TextWriter.Write 是您输出转换文本的方式。
    • context 本质上是您传递给使用 Handlebars.Compile() 创建的委托(delegate)的 JSON 对象。
    • 参数对象列表包含出现在您定义的助手旁边的参数,您将在 HTML 模板中使用这些参数

为了更好地理解参数对象列表,了解我如何在我的 HTML 模板中使用这个帮助程序会有所帮助:

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

其中“StringVariable”是我传递给使用 Handlebars.Compile() 创建的委托(delegate)的 JSON 对象的成员

关于c# - 创建 HandleBars 助手服务器端的语法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36506733/

相关文章:

c# - 如何以编程方式读取 Windows 操作系统中 SQLite 数据库的内容?

javascript - 使用 hbs 循环访问 API

handlebars.js - 定义对象并将其传递给部分

c# - Handlebars.Net If 条件助手

c# - Handlebars 日期时间格式助手

javascript - 如何使用 Handlebars.net 注册 JavaScript 助手

c# - 与 ****** 的网络连接已丢失。调试将被中止

c# - 为什么 IEnumerable?.First() 不起作用?

javascript - 在 ember 中处于 inBuffer 状态时不能修改 subview

c# - 奇怪的 MIME 类型从何而来?