2

我正在尝试在使用 .NET Core 2.1 和 Handlebars.Net 1.9.5 的控制台应用程序中使用以下模板 (TestTemplate)

<html>
<head>
    <title>A title</title>
</head>

<body>
    {{ > (lookup TemplateName)}}
</body>
</html>

所以带有 {{ > (lookup TemplateName)}} 的行给我带来了问题。

这个想法是使用部分名称,稍后将通过传递 TemplateName 变量来解析部分名称。

但是,当我尝试使用

var foo = Resource1.TestTemplate;
Handlebars.Compile(Encoding.UTF8.GetString(foo));

我得到以下异常:

System.ArgumentException:无法绑定到目标方法,因为它的签名或安全透明度与委托类型的不兼容。在 System.Reflection.RuntimeMethodInfo.CreateDelegateInternal(Type delegateType, Object firstArgument, DelegateBindingFlags bindingFlags) 在 HandlebarsDotNet.Compiler.SubExpressionVisitor.GetHelperDelegateFromMethodCallExpression(MethodCallExpression helperCall) 在 HandlebarsDotNet.Compiler.SubExpressionVisitor.VisitSubExpression(SubExpressionExpression subex) 在 System.Linionq.Expressions .VisitUnary(UnaryExpression 节点)在 System.Linq.Expressions.UnaryExpression.Accept(ExpressionVisitor 访问者)在 System.Dynamic.Utils.ExpressionVisitorUtils.VisitArguments(ExpressionVisitor 访问者,IArgumentProvider 节点)在 System.Linq.Expressions.ExpressionVisitor。

我希望有人有一个想法,因为我已经搜索了很长时间。

4

1 回答 1

2

好的,我完全错过了我正在查看 HandleBars.js 文档。

在 HandleBars.js 中,查找助手是内置的,但到目前为止,它不在 .net 版本中。

所以你必须自己声明查找助手,在我的例子中是这样的:

Handlebars.RegisterHelper("lookup", (output, context, arguments) => { output.WriteSafeString(arguments[0]); }); 

希望它可以帮助别人。

于 2018-09-27T09:45:33.680 回答