2015-09-14 4 views
1

В настоящее время я просматриваю элементы в моем проекте ASP.NET MVC на моей главной странице индекса и возвращаю результаты. То, что я хотел бы сделать, это ограничить это, включив только первые 5 элементов, а не каждое доступное значение. Я совершенно новый для синтаксиса Razor, и у меня есть небольшая проблема с правильной реализацией.Преобразование ForEach Loop для Loop

ForEach Loop

@foreach (var item in Model.RssFeed) 
    { 
     @item.Title <br />    
     @item.Description <br /> 
     <br /> 
    } 

For Loop

@for (var i = 0; i < 5; i++) 
     { 
      //How to call items? 
     } 
+1

It похоже, что вы вводите логику в свой вид. Вместо того, чтобы модель передавалась в представление, вы должны подражать результатам. –

+0

Вот что я волновался. Спасибо за понимание. В моей модели я вытаскиваю 50 результатов из webrequest и визуализую их в представлении на нескольких страницах. Для первой страницы требуются все элементы, а для второй страницы требуется только 5. Моя реализация находится здесь http://stackoverflow.com/questions/32544755/error-reading-rss-feed-using-linq-to-xml/32545308#32545308. Не могли бы вы предложить лучший способ вернуть только первые 5 результатов? Какой-то запрос в контроллере? – Matthew

+0

У вас вопрос не имеет ссылки на 50 пунктов .... вы имели в виду 20? –

ответ

1

Если вы просто хотите, первые пять и для цикла что-то вроде:

@for (var i = 0; i < 5; i++) 
    { 
     @Model.RssFeed[i].Title <br />    
     @Model.RssFeed[i].Description <br /> 
     <br /> 
    } 

Это даст вам сначала 5, вам нужно настроить некоторые подкачки, если вы хотите, чтобы остальные. Это также если у вас есть более чем на 5 пунктов в списке

+0

Я получаю 'RuntimeBinderException' на первом' Model.RssFeed [i] 'stating' Не удается выполнить привязку времени выполнения по нулевой ссылке'. – Matthew

+0

@Matthew убедитесь, что все элементы в списке заполнены, и ни один из них не является нулевым или не обрабатывает нуль из вашего кода. – code

3

Вероятно, вы должны фильтровать элементы в контроллере действий, кстати вы могли бы сделать что-то вроде этого (и забыть цикл):

@foreach (var item in Model.RssFeed.Take(5)) 
    { 
     @item.Title <br />    
     @item.Description <br /> 
     <br /> 
    } 
+0

Я получаю 'RuntimeBinderException' на' Model.RssFeed.Take (5) 'stating' Не удается выполнить привязку времени выполнения на нулевая ссылка'. – Matthew