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>
   }
}

但最好在您的 Action 方法中执行此操作,并且只将 10 个项目返回到视图,这样您就不需要通过添加 if 语句来污染您的视图。您可以使用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 回答
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>
    }
于 2017-09-17T08:27:08.290 回答