2015-09-14 106 views
1

當前我正在循環遍歷ASP.NET MVC項目中的項目,並在主索引頁面中返回結果。我想要做的僅限於前5項,而不是每個可用值。我是Razor語法的新手,我在計算正確的實現時遇到了一些問題。將ForEach循環轉換爲For循環

foreach循環

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

For循環

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

這聽起來像你正在向你的視圖中引入邏輯。相反,在模型傳遞給視圖之前,您應該模仿結果。 –

+0

這就是我所擔心的。感謝您的洞察力。在我的模型中,我從網絡請求中提取50個結果,並在多個頁面中呈現視圖中的結果。第一頁需要所有項目,第二頁只需要5.我的實現在這裏http://stackoverflow.com/questions/32544755/error-reading-rss-feed-using-linq-to-xml/32545308#32545308。你能建議最好的方法來返回前5個結果嗎? Controller中的某種查詢? – 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

我在第一個'Model.RssFeed [i]''上得到一個'RuntimeBinderException',聲明'不能對空引用執行運行時綁定。 – Matthew

+0

@Matthew確保列表中的所有項目都已填充,並且都不爲null或從您的代碼中處理null – code

3

也許你應該過濾你的項目在控制器動作,順便說一句,你可以做這樣的事情(和忘記for循環):

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

我在'Model.RssFeed.Take(5)'上得到了'RuntimeBinderException''聲明'無法執行運行時綁定一個空引用'。 – Matthew