所以我在我的项目中使用dotLiquid(1.8.0)来创建一些用于通过EO.pdf创建PDF的HTML模板
所以基本上,我想检查天数组(==日期)的给定日期是否在一周内,并在每周后添加分页符。
为了使我的问题更清楚,首先是相关代码:
{% for day in plan.Days %}
...
<table>
<tbody>
<tr class="footnote">
<td>** Debug:</td>
</tr>
<tr><td>Index: {{forloop.index}}, DateTypeChoice: {{plan.DateTypeChoice }}</td> <!-- just debug-statements -->
</tr>
</tbody>
</table>
{% assign endofweek = forloop.index | modulo: plan.DateTypeChoice %}
<p>endofweek: {{endofweek}}</p>
{%if endofweek == 0 %}
<p>"dubididu Index: " {{forloop.index}}</p>
<div style="page-break-before: always"></div>
{% endif %}
{% endfor %}
</body>
</html>
plan.DateTypeChoice
是一个整数值,包含一周的天数(5天或7天)。它在我的Drop-Model中定义为
public int DateTypeChoice { get; set; }
现在在我的测试场景中,调试语句(Index
和DateTypeChoice
)显示了我期望的值,但实际上endofweek
包含了例如(见下文){{ 1}}而不是5
而我不知道原因。
示例输出是:
0
我还尝试将括号括在作业中,例如
** Debug:
Index: 5, DateTypeChoice: 5
endofweek: 5 // This should be 0 imho
然后我收到一个错误(值可以&#39; T为NULL)。
我希望有人可以帮助我。也许我使用模数错了?据我所知,forloop.index是一个数值,并且模型中给模板的数值也被解析器视为数值,所以我没有想法。
修改
基于this线程,我尝试使用捕获而不是分配,但结果相同。代码:
{% assign endofweek = (forloop.index | modulo: plan.DateTypeChoice) %}
这里非常感谢帮助: - )
答案 0 :(得分:1)
最后我找到了解决方案......
重新分析后,我发现在我的模板中应用了 no 过滤器。也就是说,我找到了一个正确的解决方案here。
我正在使用
Template.NamingConvention = new DotLiquid.NamingConventions.CSharpNamingConvention();
也是如此,所以在将modulo:
更改为Modulo
且资本 M 之后,一切正常。叹息