在index.cshtml中仅显示x个项目

时间:2013-03-12 16:12:46

标签: c# razor visual-studio-2012

我正在Visual Studios,MVC 3,Razor引擎中创建一个新闻源项目,我只是试图一次显示10个Feed数量。

目前,当我收到数据库时,我使用了这个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个最新的feed。

提前致谢。

2 个答案:

答案 0 :(得分:4)

您可以保留计数器变量并在显示数据前进行检查

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

但最好在您的Action方法中执行此操作,并仅向视图返回10个项目,这样您就不需要通过添加if语句来污染视图。您可以使用LINQ中的Take方法获取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);
}

答案 1 :(得分:0)

会更好

 @foreach (var item in Model.Take(10))
    {
        <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>
    }