#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. Это правильный ответ. Большое спасибо!!