我有 10 个内容点。我想要一个随机显示其中 1 个的页面。
我曾尝试使用函数“ShowContentSpots” - 但它显示了所有这些并且没有循环通过。
这样做的最佳方法是什么?
我有 10 个内容点。我想要一个随机显示其中 1 个的页面。
我曾尝试使用函数“ShowContentSpots” - 但它显示了所有这些并且没有循环通过。
这样做的最佳方法是什么?
您应该编辑 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 对象一次,并在此函数中使用它。