我有一个如下所示的模板:(为了保持代码的简短性,我删除了表中的一些元素)
{{#each Tables}}
<div id='report-container'>
<table id='report-table'>
<tr class='header-row'>
<th style='width: 150px; max-width: 150px !important;'>{{this.Title}}</th>
<th>Total Company Net Sales $</th>
...
</tr>
{{#each this.Data}}
<tr>
<td>{{RowTitle}}</td>
<td>{{currency TotalCompanyNetSales}}</td>
...
</tr>
{{/each}}
</table>
</div>
{{/each}}
有帮手:
handleBars.RegisterHelper("currency", (writer, context, parameters) =>
{
var value = decimal.Parse(parameters[0].ToString());
value /= 1000;
var result = value.ToString("0,-28:C2");
return result;
});我不确定该对象本身是否相关,但我可以在必要时发布。问题就在帮手身上。当我试图编译模板时,我会得到以下错误消息:
“在关闭块表达式‘货币’之前,到达模板的末尾
如果删除货币助手,则值显示得很好。它甚至从不调用货币函数。你知道我在这里做错什么了吗?
发布于 2021-03-19 14:31:27
这个问题与新(到Handlebars.Net) return helper语法的误用有关:您声明的助手实际上是一个返回值的block助手:
handleBars.RegisterHelper("currency", (writer /*this is not `writer` but `options`*/, context, parameters) =>
{
// your code here
return result; // change is caused by the `return` statement
});为了修复助手并仍然使用return特性,只需从lambda中删除options参数:
handleBars.RegisterHelper("currency", (context, parameters) =>
{
// your code here
return result;
});https://stackoverflow.com/questions/66699839
复制相似问题