0
我有10個內容點。我想要一個頁面隨機顯示其中一個。選擇隨機內容現貨
我已經嘗試使用函數'ShowContentSpots' - 但是顯示所有人&不循環。
這樣做的最好方法是什麼?所以,只有一個項目被檢索(不是全部)
- 更改代碼
- 檢索單個項目
A,此時補充一些隨機:
我有10個內容點。我想要一個頁面隨機顯示其中一個。選擇隨機內容現貨
我已經嘗試使用函數'ShowContentSpots' - 但是顯示所有人&不循環。
這樣做的最好方法是什麼?所以,只有一個項目被檢索(不是全部)
A,此時補充一些隨機:
您應該編輯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對象,然後在此函數中使用它。
謝謝。我只通過CMS進行編輯。我如何獲得該功能? – niico
函數透視/ Razor函數/內容/ ShowContentSpots。也許一個好方法是基於這個創建另一個Razor函數(您可以在創建時選擇基於哪個函數)並試驗這個複製的函數:) – wysocki