在MVC3视图页面中显示数据子集

时间:2012-02-14 23:58:24

标签: c# asp.net-mvc linq entity-framework

我在视图页面上返回了很多行。我想要显示几个表,每个表都是完整结果的子集。我有一个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>
}

非常感谢。

2 个答案:

答案 0 :(得分:2)

假设ResponseCodeExtFlagLinkCheckerResults返回的成员,您可以像往常一样在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>
}