Вложенный цикл DotLiquid не работает

#c# #dotliquid

#c# #dotliquid

Вопрос:

Я создал шаблон DotLiquid с двумя вложенными циклами for

 {% for item in page.Fields %}
        <li>
            {{ item.Name }}:
            <select>
                {% for list in item.ListValues %}
                    <option>{{ list.Text }} </option>
                {% endfor %}
            </select>
        </li>
    {% endfor %}
  

Со следующим классом:

 public class Page: Drop
{
    public string Name { get; set; }
    public List<Field> Fields { get; set; }
}

public class Field : Drop
{
    public string Name { get; set; }
    public List<ListValue> ListValues { get; set; }
}

public class ListValue : Drop
{
    public string Text { get; set; }
}
  

Затем я создал объект и запустил его следующим образом:

 page = MyPage; // This is the created object
Template template = Template.Parse(LiquidTemplate);
string output = template.Render(Hash.FromAnonymousObject(new { page = this.page }));
  

Объект заполняется следующим образом:

 new Page
        {
            Name = "My Page",
            Fields = new List<Field>
            {
                new Field
                {
                    Name = "Title",
                    ListValues = new List<ListValue>()
                },
                new Field
                {
                    Name = "Status",
                    ListValues = new List<ListValue>
                    {
                        new ListValue
                        {
                            Text = "Open"
                        }
                    }
                }
            }

        };  
  

Внутренний цикл for не заполняется, даже несмотря на то, что с объектом все в порядке. Я вижу много пустых <option> тегов внутреннего цикла…

Я только начал работать с DotLiquid, что я делаю не так?

Комментарии:

1. Попробуйте IList<ListValue> ListValues

2. Попробовал это и получил тот же результат

Ответ №1:

Это решение от разработчика dotliquid (я опубликовал тот же вопрос в списке проблем проекта github)

dotliquid по умолчанию использует соглашение ruby.

Комментарии:

1. Это правильный ответ. Большое спасибо!!