我正在尝试在当前 15 天到未来 60 天的范围内按天为热图构建车把模板。
这是我用于模板的模型
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:序列包含多个元素
关于如何在两个数组不是父子数组时进行迭代的任何想法?