我从Warehouse数据库中提取数据并显示在网页上。
这会提取所有数据。
@foreach (WarehouseCategoryModel categoryModel in Model.Categories)
{
<tr>
<td>@Html.ActionLink(categoryModel.Name, "Category", "-WarehouseCatalog", new { ide = categoryModel.ID }, null)</td>
<td>@categoryModel.Count</td>
</tr>
}
我需要显示Count大于0的每个类别。
我试过了:
if(@categoryModel.Count > 0)
{
<td>@categoryModel.Count</td>
}
答案 0 :(得分:3)
您可以使用Where()
子句明确过滤掉您正在迭代的项目:
<!-- Only iterate through those with Counts greater than 0 -->
@foreach (WarehouseCategoryModel categoryModel in Model.Categories.Where(c => c.Count > 0))
{
<!-- Do work here -->
}
如果您想处理模型或类别可能为null的方案,可以添加以下显式检查:
<!-- Ensure you have categories to loop through (avoids null exceptions) -->
@if(Model?.Categories != null)
{
<!-- Only iterate through those with Counts greater than 0 -->
foreach (WarehouseCategoryModel categoryModel in Model.Categories.Where(c => c.Count > 0))
{
<!-- Do work here -->
}
}
else
{
<tr>
<td>No Categories Available</td>
</tr>
}
如果您计划处理此问题,您可能希望将此逻辑包含在ViewModel本身而不是View中,但总体思路是相同的。
答案 1 :(得分:1)
您的@
位置错误。它应该在if
之前,就像这样
@if(categoryModel.Count > 0)
{
<td>@categoryModel.Count</td>
}
else
{
<td></td>
}
答案 2 :(得分:0)
如评论中所述。这应该有效:
<td>
if(@categoryModel.Count > 0)
{
@categoryModel.Count
}
</td>
答案 3 :(得分:0)
从IF语句中删除@。你已经在foreach循环中使用过。
if(categoryModel.Count > 0)
{
<td>@categoryModel.Count</td>
}
else
{
<td></td>
}
答案 4 :(得分:0)
你可以采用几种不同的方法,你要记住的方法在复杂的迭代中会很慢。我将指出潜在的代码错误:
@if
会触发正确的剃刀,除非您Html
和foreach
之间没有if
。样品:
// Valid
@foreach(var .... model.Categories)
{
if(...)
{
}
}
// Invalid:
@foreach(var .... model.Categories)
{
<td>Content</td>
if(...)
{
}
}
Example.Models.Warehouse
。您应该展示如何为视图宣布@model
。这可以帮助我们进一步区分,你确定你有多个吗?我会像这样构造以更好地保存表格行数据:
@if(Model != null)
{
foreach(Example.Models.Warehouse model in Model.Categories)
{
<tr>
<td>@model.Something</td>
</tr>
}
}
不需要条件,如果它是空的,则循环不会执行。
答案 5 :(得分:0)
知道了,感谢所有反馈。这是我的最终解决方案。
@if(categoryModel.Count > 0)
{
<td>@Html.ActionLink(categoryModel.Name, "Category","~WarehouseCatalog", new { id = categoryModel.Id }, null)</td>
<td>@categoryModel.Count</td>
}
答案 6 :(得分:0)
您可以尝试以下操作。我首先检查了列表中是否有项目,如果有创建HTML table
,请遍历项目并为每个项目创建table row
:
@if (Model.Categories.Count > 0)
{
<table>
foreach (WarehouseCategoryModel categoryModel in Model.Categories)
{
<tr>
<td>@Html.ActionLink(categoryModel.Name, "Category", "-WarehouseCatalog", new { ide = categoryModel.ID }, null)</td>
@if(categoryModel.Count > 0)
{
<td>@categoryModel.Count</td>
}
else
{
<td> </td>
}
</tr>
}
</table>
}
我希望这会有所帮助。