2

私は Visual Studios、MVC 3、Razor エンジンでニュースフィード プロジェクトを作成しています。一度に 10 個のフィードを表示しようとしています。

現在、データベースを稼働させている間、この index.cshtml を使用しました。

@model IEnumerable<NyjiGrunnur.Models.Article>

@{
ViewBag.Title = "NewsFeed";
}

<h2>@ViewBag.Message</h2>

     @foreach (var item in Model)
    {
        <div id="eitt">
            <fieldset>
                <legend>@Html.ActionLink( item.Name, "Edit", new { id=item.Id } )</legend>
                <div>@item.Subject, @item.Created</div>
                <p>@Html.Raw(item.Content.Replace(Environment.NewLine, "<br/>"))</p>
            </fieldset>
        </div>
    }

foreach はすべての項目を取得するので、for ループなどを使用して最新の 10 個のフィードのみを表示できるかどうか疑問に思っていました。

前もって感謝します。

4

2 に答える 2

4

カウンター変数を保持し、データを表示する前に確認できます

@{
   int counter=0;
}
foreach (var item in Model)
{
   counter++;
   if(counter<=10)
   {
      <div id="eitt">@item.Name</div>
   }
}

ただし、if ステートメントを追加してビューを汚染する必要がないように、アクション メソッドでこれを行い、ビューに 10 項目のみを返すことをお勧めします。TakeLINQのメソッドを使用して、10 個の項目を取得できます。

public ActionResult Newsfeed()
{
 List<Article> articleList=new List<Article>();

 articleLsit=GetListOfItemsFromSomewhere();
 //now get only 10. you may apply sorting if needed
 articleList=articleList.Take(10); 

 return View(articleList);
}
于 2013-03-12T16:19:50.427 に答える