【发布时间】:2020-03-19 15:00:33
【问题描述】:
我有一个控制器方法可以创建这样的 ViewBag
foreach (Site s in sites)
{
var OffReportRows = new Queue<List<string>>();
ViewBag.showColumns = false;
if (osiTotal[s.ID] > 0) {
ViewBag.showColumns = true;
OffReportRows.Enqueue(new List<string>
{
"Parts",
"",
"",
osiPartCost[s.ID].ToString("C2"),
"",
"",
osiPartCost[s.ID].ToString("C2")
});
}
还有一个查看 ViewBag 值是否为真的查看页面
@foreach (Site s in sites)
{
if( ViewBag.showColumns == true) {
<tr>
<td style="font-weight : bold;">@s.Name</td>
<td></td>
<td></td>
<td style="font-weight : bold;">Average Cost</td>
<td></td>
<td></td>
<td style="font-weight : bold;">Average Cost With Labour</td>
</tr>
}
但即使总数为 0,它仍然总是返回列。我该如何解决这个问题?
【问题讨论】:
-
您是否尝试过放置断点并调试您的应用程序?在操作和视图中验证
ViewBag.showColumns的值。 -
@jegtugado 是的,我有。它始终以当前设置的方式返回 true
-
根据您的设计,您将遍历
sites并在每次迭代中确定ViewBag.showColumns。这是你真正想要的吗?最终值将基于最后一个条目。 -
每个 osiTotal[s.ID] 都会有一个总数。因此,如果该总数不大于 0,我不希望为该站点显示列。 @jegtugado
-
所以如果 osiTotal[3] 的值为 100。我想显示该站点的列。但是如果 osiTotal[4] 的值为 0。我不希望它显示该站点的列@jegtugado
标签: c# html asp.net-mvc linq