2012-09-11 48 views
0

我有一個產品清單,並希望發送給他們,以便每頁刷新一次,每頁5個部分,按部分查看。當所有部件在下一次刷新時從列表開始處重新開始。如果產品清單計數不爲5,例如count = 23,則返回第一個。即取15-20,然後取20-2(21,22,23,1和2)。然後,3-8並繼續。如何發送列表項以逐個查看mvc3?

我不能使用分頁規則爲:

ViewBag.Result = db.Products.Skip((pageNo - 1) * 5).Take(5).ToList(); 

因爲,我將發送5種產品的所有行動的意見和更新在每一個耳目一新的網站。

我有一個想法,採取隨機索引和開始,但我需要知道最後一次發送索引,並在每次刷新,將其發送到控制器的當前行動。我怎樣才能做到這一點?

回答

1

您需要保持HTTP調用之間的最後一次發送索引。由於HTTP是無狀態的,您需要一個媒介來保持它之間。您可以使用會話變量做到這一點。

Session["LastIndexSent"]= 5; 
return View(someITemList); 

而且儘量避免在ViewBag發送這樣的結果。使用動態的東西,如ViewBag/ViewData在控制器和視圖之間傳輸數據會使你的代碼變得難看。使用強類型的方法。

List<Product> productList=GetProductListFromSomeWhere(); 
return View(productList); 

而在你的強類型的視圖,

@model List<Product> 
@foreach(var prod in Model) 
{ 
    <p>@prod.Name</p> 
} 
+0

是我使用ViewBag。我應該編寫代碼逐個採用元素,並將使用有關會話的答案。然後會說關於結果 –

+0

我沒有關於會話的信息。在這一行中: Session [「LastIndexSent」] = 5;是5默認(開始)值?如何將默認值設置爲會話變量?開始 –

+0

每次你發送一些數據到視圖,設置會話值,下一次,閱讀並看看你最後發送了什麼,決定接下來發送什麼,做到這一點。更新會話值 – Shyju