Asp.net mvc 如何在ASP.NET MVC中创建旋转广告块?

Asp.net mvc 如何在ASP.NET MVC中创建旋转广告块?,asp.net-mvc,Asp.net Mvc,如何使用ASP.NET MVC在每次页面刷新时实现一个旋转广告块(类似于这样做) 您是否认为他们有一个会话变量,其中包含我们当前正在查看的广告索引,并在每个请求或其他内容中循环使用它?您可以生成一个随机数,并将其用作要显示的广告的数组键,但您无法确保均匀曝光,并且在播放时会导致许多问题货币交换。为此目的而构建的应用程序是。这提供了真正深入的统计信息,还允许您设置每个广告需要显示的内容。它非常强大,许多商业网站都使用它来管理他们的广告。我不知道MVC,但是有什么东西阻止你使用AdRotator控件

如何使用ASP.NET MVC在每次页面刷新时实现一个旋转广告块(类似于这样做)


您是否认为他们有一个会话变量,其中包含我们当前正在查看的广告索引,并在每个请求或其他内容中循环使用它?

您可以生成一个随机数,并将其用作要显示的广告的数组键,但您无法确保均匀曝光,并且在播放时会导致许多问题货币交换。为此目的而构建的应用程序是。这提供了真正深入的统计信息,还允许您设置每个广告需要显示的内容。它非常强大,许多商业网站都使用它来管理他们的广告。

我不知道MVC,但是有什么东西阻止你使用AdRotator控件吗

我会使用、、或其他广告经理

但是,如果我想自己把它作为一种练习,我会:

  • 创建广告的数据库表
  • 在我的基本控制器中,在ViewData中选择一个随机广告
  • 将局部视图添加到母版页以呈现广告
  • [最重要的]使用Phil Haack的MVC风格版本“”

  • 这与显示循环报价单、随机特征用户、,或者你想在每个页面上显示的任何其他随机内容。

    我不得不在MVC中为加权广告控件编写一些东西,如果可能的话,它不会连续两次显示同一个广告。在我匆忙中,我得到了一段可怕的代码,可能会给你带来灵感

    我相信有很多更好的方法可以做到这一点(我已经知道这样做会让副本在不应该的情况下通过),但由于我花了很短的时间,它完成了任务

        public List<Ad> GetRandomWeightedAds()
        {
            /* Generate random order list of ads with duplicates for ViewsPerRotation */
            List<Ad> returnList = GetAllAds().SelectMany(s => Enumerable.Repeat(s, s.ViewsPerRotation)).OrderBy(s => Guid.NewGuid()).ToList();
            for (int i = 0; i < returnList.Count - 1; i++) /* Compare all but the last element against subsequent element */
            {
                if (returnList[i].Id == returnList[i + 1].Id)
                {
                    /* If next to an identical element try and find a new spot for the subsequent element */
                    for (int j = 0; j < returnList.Count; j++)  
                    {
                        if (returnList[j].Id != returnList[i].Id /* Don't switch identical element back into same pos*/
                            && (j<i || j == 0 || j-1 == i || returnList[i].Id != returnList[j - 1].Id) /* When moving before current 'i', don't move into a place after an identical element */
                            && (j<i || j == returnList.Count - 1 || j + 1 == i || returnList[i].Id != returnList[j + 1].Id)) /* When moving before current 'i', don't move into a place before an identical element */
                        {
                            returnList[i] = returnList[j];
                            returnList[j] = returnList[i+1]; /* returnList[i+1] == returnList[i] */
                            break;
                        }
                    }
                }
            }
            return returnList;
        }
    
    public List GetRandomWeightedAds()
    {
    /*为ViewsPerRotation生成包含重复广告的随机顺序列表*/
    List returnList=GetAllAds().SelectMany(s=>Enumerable.Repeat(s,s.ViewsErroration)).OrderBy(s=>Guid.NewGuid()).ToList();
    对于(int i=0;i&&(j以下博客将为Ad Rotator的实现提供一个良好的开端

    1) 下面是ASP.NET中的内容,但仍然完全基于Jquery且简单

    2) 下面给出ad rotator的助手方法实现


    我认为这个问题没有任何问题。@[KingNestor]当前位置:修改得非常好,谢谢;现在这是一个普遍的问题。你的城堡现在是用石头而不是沙子建造的。沙堡没有什么错,除了朋克小孩到处踢它们来破坏别人的一天。我同意,这里的评论是可笑的迂腐。如果你多次刷新Stackoverflow,你会看到它们循环出现每次刷新的顺序相同。+1-我喜欢OpenX的想法,但我想看看是否有类似的.net版本:-)OpenX非常棒,因为它可以为您管理一切!您的服务器上没有额外的负载,非常强大的统计数据,允许您管理每个广告的显示量和显示时间等。您实际上并不在y上安装它我们的服务器,他们托管所有东西。只是注意到你每次都想要相同的周期。你应该在帖子中澄清行为。我会看看是否有一些代码可以发布。我会按照波特曼的回答[并按照建议使用cookie或会话变量来维护位置]。