我有10个内容点。我想要一个页面随机显示其中一个。
我尝试过使用函数'ShowContentSpots' - 但是它显示了所有这些&不会循环。
这样做的最佳方式是什么?
答案 0 :(得分: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对象初始化一次,然后在其他地方初始化,并在此函数中使用它。