我在视图页面上返回了很多行。我想要显示几个表,每个表都是完整结果的子集。我有一个foreach循环,我想知道如何过滤结果,所以“ResponseCode> 400”和“ExtFlag = 1”
@foreach (var res in Model.LinkCheckerResults)<br>
{
<tr>
<td>
@Html.DisplayFor(model => res.SourceURL)<br>
</td>
<td>
@Html.DisplayFor(model => res.TargetURL)
</td>
<td>
@Html.DisplayFor(model => res.Response)
</td>
</tr>
}
非常感谢。
答案 0 :(得分:2)
假设ResponseCode
和ExtFlag
是LinkCheckerResults
返回的成员,您可以像往常一样在C#中的foreach
循环中执行此操作。
使用LINQ:
@foreach (var res in Model.LinkCheckerResults
.Where(lcr => lcr.ResponseCode > 400 && lcr.ExtFlag == 1))
{
<tr>
<td>
@Html.DisplayFor(model => res.SourceURL)<br>
</td>
<td>
@Html.DisplayFor(model => res.TargetURL)
</td>
<td>
@Html.DisplayFor(model => res.Response)
</td>
</tr>
}
或if
声明:
@foreach (var res in Model.LinkCheckerResults)<br>
{
if (res.ResponseCode > 400 && res.ExtFlag == 1)
{
<tr>
<td>
@Html.DisplayFor(model => res.SourceURL)<br>
</td>
<td>
@Html.DisplayFor(model => res.TargetURL)
</td>
<td>
@Html.DisplayFor(model => res.Response)
</td>
</tr>
}
}
或( true MVC方式)将预过滤的集合提供为ViewData
/ ViewBag
属性。
答案 1 :(得分:1)
您可以在返回视图之前过滤模型,也可以执行以下操作:
@foreach (var res in Model.LinkCheckerResults.Where(x=>x.Response > 400 && x.ExtFlag = 1).ToList())<br>
{
<tr>
<td>
@Html.DisplayFor(model => res.SourceURL)<br>
</td>
<td>
@Html.DisplayFor(model => res.TargetURL)
</td>
<td>
@Html.DisplayFor(model => res.Response)
</td>
</tr>
}