从列表中随机抽取,但在一天中显示相同的一个,然后在下一天内随机显示一个新的

问题描述 投票:0回答:1

我正在使用使用MVC Razor的Umbraco。但是这个问题是一般的C#.Random()问题。

我从“特色商品”列表中随机抽取。我得到列表,找到下一个,然后显示它。但是,这会导致每次浏览器刷新。我需要的是“功能项目”全天显示,然后第二天从列表中拉出一个新的随机项目。

到目前为止,我提取随机节点的代码如下。我如何将其扩展为每天只提取一次随机项目,然后第二天再提取一个新项目。可以仅使用C#来完成此操作,还是可以使用Javascript作为更好的途径。我想到了两者,但是如何每天使用C#MVC Razor进行一次随机拉呢?

var random = new Random();
var fCollectList = Umbraco.Content(7471).Descendants("featuredItem");
  int index = random.Next(fCollectList.Count());
//NEED TO SHOW THE SAME ONE FOR EVERYONE ON A DAY, THEN THE NEXT DAY SHOW ANOTHER RANDOM ONE. 
<p>@fCollectList[index].Name</p>
c# razor umbraco
1个回答
0
投票

如注释中所建议,您需要将值缓存在某个地方,但是如何缓存它取决于您的要求。

[如果要为所有用户提供相同的值,那么最好的方法是将其存储在数据库中,在表内将具有ValueCreatedAt列,每次刷新时,您将检查CreatedAt是否为今天,只需返回Value,否则生成新值并用新的ValueCreatedAt更新记录。

[如果您想为每个用户提供不同的值,那么您可以使用一个额外的列调用UserId来执行与上述相同的操作,或者通过在本地存储中存储ValueCreatedAt在javascript中执行此操作,然后可以应用与上述相同的值生成逻辑,但在javascript端。

© www.soinside.com 2019 - 2024. All rights reserved.