2012-04-16 3 views
0

私はMVC3 Webアプリケーションを作成しています。私のデータベースのデータで満たされているテーブルがありますが、私のシノプシスの最初の3行は、すべての10行の代わりに。私はこれはHTMLヘルパーと関係があると思いますが、あなたの誰かが私が正しいコードを見つけるのを助けることができるかどうか疑問に思っていましたか? どんな助力も素晴らしいだろう!私のビューの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> 

答えて

0

あなたはそれぞれの行を表示するために@foreach (var item in Model)を使用しています。

@for (int i=0; i<3; i++)を試して、ループで最初の3つの項目が表示されるようにしてください。

次に、ディスプレイ用に@Html.DisplayFor(m => m[i].name)などとモデルを参照する必要があります。私はそれがうまくいくと信じています

3

私は2つの状態に私の答えを分割します:あなたは(「表示し、より結果」リンクのような)ページの流れの下のどこかに、さらに他の7行が必要

  1. 残りのリストは必要ありません。

解決方法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:あなたは残りの要素を必要としない場合のビューにモデルを送信するときに

、ちょうど取る使用しています。

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

あなたはそれを動作させるために)(ToListメソッドが必要になることがあります、それはあなただけのビューに送信された要素の数を短く、そのまま自分のコードを維持することができる方法

を依存しています。

希望すると助かります!

+0

+1には、ビューモデルに実際にビューに表示される情報のみが含まれていることに注意してください。これらのソリューション2は、コントローラーに必要なものだけを投入する方が優れています。その後、元のループをきれいにすることができます。私の解決策はすばやく修正されました! – Dangerous