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



我正在尝试使用部分视图从另一个视图制作表。

我想访问的视图内容:

@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行?

t

您可以在控制器动作或剃须刀中使用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>
    }

您应该将新属性添加到模型中,并显示最大行。之后,您可以在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})

最新更新