首页 > 解决方案 > Handlebars C# if equals 比较

问题描述

我正在尝试在 Handlebars .NET 上进行 if equals 比较。{{#if xxx}}正在使用布尔值。如何{{#if x = 'foo'}}在 Handlebars .NET 中进行比较?

标签: c#.nethandlebarshelperhandlebars.net

解决方案


您只能在此处使用数据中的布尔值,不能使用表达式:

{{#if foo}}
    {{helloMessage}}
{{/if}}

foo 将是一个布尔值:

var data = new
{
    helloMessage = "Hello world!",
    foo = true
};

.

如果你想处理类似表达式的行为,你也可以像这样注册一个块处理程序:

Handlebars.RegisterHelper("ifEq", (output, options, context, arguments) =>
{
    if (arguments[0] == arguments[1])
    {
        options.Template(output, context);
    }
    else
    {
        options.Inverse(output, context);
    }
});

并在您的模板中使用它:

{{#ifEq foo ""bar""}}
    {{body}}
{{/ifEq}}

但这在某种程度上与我对模板的理解相矛盾。


推荐阅读