2013-09-25 49 views
0

我有10個內容點。我想要一個頁面隨機顯示其中一個。選擇隨機內容現貨

我已經嘗試使用函數'ShowContentSpots' - 但是顯示所有人&不循環。

這樣做的最好方法是什麼?所以,只有一個項目被檢索(不是全部)

  1. 更改代碼
  2. 檢索單個項目

A,此時補充一些隨機:

回答

1

您應該編輯ShowContentSpots功能快速解決方案將是:

@if (!string.IsNullOrEmpty(ContentSpotIds)) 
{ 
    var rand = new Random(); 

    var spotIds = ContentSpotIds.Split(',').Select(f=>new Guid(f)); 
    var spots = Data.Get<Content.ContentSpot>().Where(f=> spotIds.Contains(f.Id)).ToList(); 
    if (spots.Any()) 
    { 
     var spot = spots[rand.Next(spots.Count)]; 

     <div class="spots"> 
      <div class="spot"> 
       @Html.Raw(spot.Content) 
      </div> 
     </div> 
    } 
} 

請注意,這是一部分或原始函數的代碼。 在這裏,我補充說:

var rand = new Random(); 

和修改這一部分:

var spot = spots[rand.Next(spots.Count)]; 

<div class="spots"> 
    <div class="spot"> 
     @Html.Raw(spot.Content) 
    </div> 
</div> 

這僅僅是一個快速的樣品。所以當你刷新頁面的速度非常快時,每次都可能不會改變 - 因爲每次我們引用頁面時都會創建一個新的Random對象。

爲了避免這種情況,只需要在其他地方初始化Random對象,然後在此函數中使用它。

+0

謝謝。我只通過CMS進行編輯。我如何獲得該功能? – niico

+0

函數透視/ Razor函數/內容/ ShowContentSpots。也許一個好方法是基於這個創建另一個Razor函數(您可以在創建時選擇基於哪個函數)並試驗這個複製的函數:) – wysocki