dotLiquid: модуль-расчет не работает должным образом

Поэтому я использую dotLiquid (1.8.0) в своем проекте для создания некоторых HTML-шаблонов, которые используются для создания PDF-файлов через EO.pdf.

В общем, я хочу проверить, указаны ли указанные даты в массиве Days (== Dates) за одну неделю, и добавить разрыв страницы после каждой недели.

Чтобы сделать мою проблему более понятной, сначала приведем соответствующий код:

{% 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-модели как

    public int DateTypeChoice { get; set; }

Теперь в моем тестовом сценарии операторы отладки (Index а также DateTypeChoice) показывают ожидаемые значения, но на самом деле endofweek содержит, например (см. ниже) 5 вместо 0и я не знаю, почему это так.

Пример вывода:

** Debug:
Index:  5, DateTypeChoice: 5
endofweek: 5 // This should be 0 imho

Я также пытался поставить скобки для назначения, как

    {% assign endofweek = (forloop.index | modulo: plan.DateTypeChoice) %}

но затем я получаю ошибку (значение не может быть NULL).

Я надеюсь, что кто-то может помочь мне здесь. Возможно, я использую по модулю неправильно? Как я знаю, forloop.index - это числовое значение, а числовые значения, данные шаблону из модели, также обрабатываются синтаксическим анализатором как числовые значения, так что я не согласен.

Редактировать:

Основываясь на этой теме, я попытался сделать это с захватом вместо назначения, но с тем же результатом. Код:

{% capture endofweek %} {{ forloop.index | modulo: plan.DateTypeChoice }}{% endcapture %}

    <p>"endofweek: " {{endofweek}}</p> //again 5 :-(
    {%if endofweek == 0 %}

Помощь очень ценится здесь:-)

1 ответ

Решение

Наконец я нашел решение...

После повторного анализа я обнаружил, что в моих шаблонах буквально не применялся фильтр. Тем не менее, я нашел решение прямо здесь.

Я использую

Template.NamingConvention = new DotLiquid.NamingConventions.CSharpNamingConvention();

тоже так после смены modulo:в Modulo с большой буквы М, все работает нормально.. вздох

Другие вопросы по тегам