使用PDF生成器,它使用了模板引擎Scriban和LaTeX。尽管我似乎无法引用C#对象,但Scriban试图通过索引符号读取(使用数组此索引处的数据)。我的意思是这样的:
{~for index in 0..document.template_data.tables.size~}}
{{ document.template_data.tables[index].data_matrix }}
{{ end }}
我得到:Object document.template_data.tables[index] is null
,这最终意味着编译器无论出于何种原因都无法检索该对象。
问:数组有大小吗? 答:我已经在scriban中浏览了,只是吐出了大小。有5张桌子。
问:您从事研究吗? 答:是的,这是github上的一些人,告诉人们问题已解决
答案 0 :(得分:0)
您的问题实际上与索引超出范围有关。您正在遍历0-表的大小。换句话说,该对象为null,因为您正尝试访问最后一个条目之后的内容。我创建了一些超级简单的POCO,以填充类似于您的代码的对象。
public class Document
{
public Data TemplateData { get; set; }
}
public class Data
{
public List<TableRow> Tables { get; set; }
}
public class TableRow
{
public string DataMatrix { get; set; }
}
这是更新的脚本,用于遍历表
var bodyTextSub = @"{{~for index in 1..document.template_data.tables.size ~}}
{{index - 1}}: {{ document.template_data.tables[index-1].data_matrix }}
{{ end }}";
var doc = new Document
{
TemplateData = new Data
{
Tables = new List<TableRow>
{
new TableRow {DataMatrix = "This works!!"},
new TableRow {DataMatrix = "Row 2"},
new TableRow {DataMatrix = "Row 3"},
new TableRow {DataMatrix = "Row 4"},
new TableRow {DataMatrix = "Row 5"}
}
}
};
var template2 = Template.Parse(bodyTextSub);
var result2 = template2.Render(new {document = doc});
Console.WriteLine(result2);
这是结果:
0: This works!!
1: Row 2
2: Row 3
3: Row 4
4: Row 5