0

我有 10 个内容点。我想要一个随机显示其中 1 个的页面。

我曾尝试使用函数“ShowContentSpots” - 但它显示了所有这些并且没有循环通过。

这样做的最佳方法是什么?

4

1 回答 1

1

您应该编辑 ShowContentSpots 函数并:

  1. 更改代码以便只检索一项(不是全部)
  2. 在检索单个项目时添加一些随机数

一个快速的解决方案是:

@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 对象一次,并在此函数中使用它。

于 2013-09-25T10:35:37.500 回答