0

MVC3 Web アプリケーションを作成しています。データベースからのデータで満たされたテーブルがありますが、概要の 10 行すべてではなく、最初の 3 行のみを表示するにはどうすればよいか疑問に思っていました。これには何か関係があると思います。 HTMLヘルパーを使用していますが、正しいコードを見つけるのを手伝ってくれる人がいるかどうか疑問に思っていました????? どんな助けでも素晴らしいでしょう!

    @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

答えを 2 つの状態に分けます。

  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 ループで実行し、新しい { @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 のモデルを etc として参照する必要があります。私はそれがうまくいくと信じています。

于 2012-04-16T13:44:25.370 に答える