如何解决Handlebars.net:在块表达式“货币”关闭之前已到达模板末尾
我有一个看起来像这样的模板: (我删除了表格的一些元素只是为了保持代码简短)
{{#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;
});
我不确定对象本身是否相关,但如有必要我可以发布。问题仅在于助手。当我尝试编译模板时,我收到以下错误消息:
“在块表达式‘货币’关闭之前到达模板结尾”
如果我删除货币助手,则该值显示正常。它甚至从不调用货币函数。知道我在这里做错了什么吗?
解决方法
问题与滥用 new (到 Handlebars.Net) return helper
语法有关:您声明的 helper 实际上是一个 block
helper 返回值:
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;
});
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。