2013-03-12 3 views
2

Я делаю проект новостей в Visual Studios, MVC 3, Razor engine, и я пытаюсь отобразить, скажем, 10, количество каналов сразу.Показать только x количество элементов в index.cshtml

В настоящее время, когда я получал базу Собирается я использовал этот 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> 
    } 

Еогеасп принимает каждый элемент, и мне было интересно, если я мог бы использовать для цикла или что-то подобное, чтобы отобразить только 10 новейших каналов.

Заранее спасибо.

+2

'@foreach (вар элемент в Model.OrderByDescending (х => x.Created) .Снять (10))' –

+1

Ограничить список _in в Controler_. –

+0

@IliaG Спасибо, лабда-выражения позаботились об этом. – Mappan

ответ

4

Вы можете оставить переменную счетчика и проверить его перед отображением данных

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

Но лучше сделать это в вашем методе действий и возвращают только 10 элементов в представлении, так что вы не» t необходимо загрязнить ваш взгляд, добавив оператор if. Вы можете использовать метод Take из LINQ, чтобы получить 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); 
} 
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> 
    }