我正在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。
提前致谢。
答案 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>
}