0

我正在制作一个 MVC3 Web 应用程序。我有一个表格,里面装满了我的数据库中的数据,但我想知道如何让它只显示概要的前三行而不是全部 10 行。我认为这有关系使用 HTML Helpers 但想知道是否有人可以帮我找到正确的代码??????任何帮助都会很棒!

    @model IEnumerable<TheatreGroup.Models.Show>
@{
    ViewBag.Title = "Shows";
}
<h2>
    Shows</h2>

<p>Below is a list of shows which will be avalible in the next couple of weeks</p>

<p>
    @Html.ActionLink("Create New", "Create")
</p>
@using (Html.BeginForm())
{ 
    <p>
        Find by name: @Html.TextBox("SearchString")
        <input type="submit" value="Search" /></p>
    }
<table>
    <tr>
        <th>
            @Html.ActionLink("name", "Index", new { sortOrder = ViewBag.nameSortParm,})
        </th>
        <th>
            @Html.ActionLink("writer", "Index", new { sortOrder = ViewBag.writerSortParm,})
        </th>
        <th>
            @Html.ActionLink("synopsis", "Index", new { sortOrder = ViewBag.synopsisSortParm,  })
        </th>
        <th>
        </th>
    </tr>
    @foreach (var item in Model){

        <tr>
            <td>
                @Html.DisplayFor(modelItem => item.name)
            </td>
            <td>
                @Html.DisplayFor(modelItem => item.writer)
            </td>
            <td>
                @Html.DisplayFor(modelItem => item.synopsis)
            </td>
            <td>
                @Html.ActionLink("Edit", "Edit", new { id = item.showid }) |
                @Html.ActionLink("Details", "Details", new { id = item.showid }) |
                @Html.ActionLink("Delete", "Delete", new { id = item.showid })
            </td>
        </tr>
    }
</table>
4

2 回答 2

3

我将我的答案分为两种状态:

  1. 您需要页面流下方的其他 7 行(如“显示更多结果”链接)

  2. 您不需要列表的其余部分。

解决方案1:

使用@Dangerous 所说的话。

@for (int i=0; i<3; i++)
{
    @Html.DisplayFor(m => m[i].name) // And the rest of the data
}

请注意,如果您没有 3 个元素,则此代码将引发异常。您可以做的是检查计数是否小于 3,然后运行到该数字。

您可能还想在 foreach 循环上继续运行,只需提供某种将其隐藏的类 new { @class = 'hidden' } 然后当您按下某行时,只需使用 Javascript (jQuery) 来显示它们。

解决方案2:

如果您不需要其余元素,则在将模型发送到视图时只需使用 take。

public ActionResult Action()
{
    var model = GetListFromDatabase().Take(3); // LINQ
    return View(model);
}

您可能需要 ToList() 才能使其工作,这取决于

这样您就可以保持代码不变,只需缩短发送到视图的元素数量。

希望能帮助到你 !

于 2012-04-16T14:20:40.533 回答
0

@foreach (var item in Model)用于显示每一行。

尝试使用@for (int i=0; i<3; i++),以便循环仅显示前 3 个项目。

然后,您需要为@Html.DisplayFor(m => m[i].name)Display For 引用模型等。我相信这应该有效。

于 2012-04-16T13:44:25.370 回答