部分视图ASP MVC 5 C#:如何使用局部视图获取表的一部分?

时间:2017-06-28 09:19:51

标签: c# html asp.net-mvc-5

我尝试使用其他视图中的局部视图制作表格。

我想要播放的视图内容:

@model Agro1.ModelView.MessageViewModel
@using Agro1.Models


<span style="color:darkgreen">Messages</span>
<br />
<table>

    <tr>
        <td>Subject</td>
        <td>Content</td>
        <td>Farmer Email</td>
    </tr>
    @{
        foreach (Message obj in Model.messages)
        {
            <tr>
                <td>@obj.Subject</td>
                <td>@obj.Content</td>
                <td>@obj.FarmerEmail</td>
            </tr>
        }
    }
</table>

在另一个视图中我想只显示该表的第5行。

现在我在视图中的代码如下所示:

@Html.Partial("DisplyaMessages",Model)

它显示了完整的表格。 我怎么才能只显示前5行?

2 个答案:

答案 0 :(得分:0)

您应该在模型中添加一个新属性,并显示最大行数。 之后,您可以在foreach期间查看此房产。

@model Agro1.ModelView.MessageViewModel
@using Agro1.Models


<span style="color:darkgreen">Messages</span>
<br />
<table>

    <tr>
        <td>Subject</td>
        <td>Content</td>
        <td>Farmer Email</td>
    </tr>
    @{
        var x = 0;
        foreach (Message obj in Model.messages)
        {
            if (Model.MaxRows > 0 && x > Model.MaxRows) break;
            <tr>
                <td>@obj.Subject</td>
                <td>@obj.Content</td>
                <td>@obj.FarmerEmail</td>
            </tr>
            x++;
        }
    }
</table>

您可以调用部分创建这样的新模型:

@Html.Partial("DisplyaMessages", new MessageViewModel { MaxRows = 5, messages = Model.messages})

答案 1 :(得分:0)

你可以在控制器动作或剃须刀中使用linq语法.take(5)。

您的剃刀代码如下所示:

@{
    foreach (Message obj in Model.messages.take(5))
    {
        <tr>
            <td>@obj.Subject</td>
            <td>@obj.Content</td>
            <td>@obj.FarmerEmail</td>
        </tr>
    }