我正在尝试建立一个手柄模板,在当前到未来60天之前的15天内,一天一天的热图。
下面是我使用的模板模型
public class HeatMapDto
{
public IEnumerable<HeatMapDateDto> HeatMapDates { get; set; }
public IEnumerable<ProductDto> Products { get; set; }
}这是我的模板的相关部分
<table style='width: 2000px'>
<tr>
<th style='width: 100px'>Product</th>
<th style='width: 100px'>EAStart</th>
<th style='width: 100px'>Release</th>
{{#each HeatMapDates}}
<th style='width: 50px'>{{FormattedDate}}</th>
{{/each}}
</tr>
{{#each Products}}
<tr>
<td>{{ProductName}}</td>
<td>{{FormattedEarlyAccessStart}}</td>
<td>{{FormattedReleaseDate}}</td>
{{#each @root.HeatMapDates}}
<td style="background-color:{{SelectCellColor DateValue EarlyAccessDate ReleaseDate '#747dff' '3d07ff' '#8cb871' '#e9fbff'}}{{/SelectCellColor}}"> </td>
{{/each}}
</tr>
{{/each}}
</table>HeatMapDates中填充了报表的所有时间,我可以迭代它们来生成列标题。
public class HeatMapDateDto
{
public DateTime DateValue { get; set; }
public string FormattedDate => DateValue.ToString("MM/dd");
}
public class HeatMapProductDto
{
public string ProductName { get; set; }
public DateTime? EarlyAccessStart { get; set; }
public DateTime? ReleaseDate { get; set; }
public string FormattedEarlyAccessStart => EarlyAccessStart?.ToString("MM/dd");
public string FormattedReleaseDate => ReleaseDate?.ToString("MM/dd");
}SelectCellColor是我在代码中注册的一个处理程序,当调用它时,这三个日期是未定义的,上下文是一个HeatMapDate。它的目的是确定传递给单元格的4种颜色中的哪种颜色: InEarlyAcccess、ReleaseDate、PostRelease或默认颜色,按顺序排列。
如果我像这个{{#each product in Products}}那样执行外部循环,Handlebars.Net会抛出一个异常:
System.AggregateException:发生了一个或多个错误。-> System.InvalidOperationException:序列包含多个元素
对于如何在这两个数组不是父-子数组的情况下进行迭代,有什么想法吗?
发布于 2018-06-25 01:53:57
工具栏不支持variableName in语法,只支持#each enumerable语法。
您仍然可以使用嵌套循环-每个块创建一个新的上下文,并且父上下文总是可以通过../访问。因此,在您的示例中,外部循环中的this (或仅仅是隐式上下文)将是当前项,而在嵌套循环中,../将引用外部循环中的当前项。
https://stackoverflow.com/questions/50740877
复制相似问题