2009-02-19 4 views
20

¿Cómo implementaría un bloque de anuncios rotativo con cada actualización de página, similar a lo que hace SO, utilizando ASP.NET MVC?¿Cómo creo bloques de anuncios giratorios en ASP.NET MVC?

¿Crees que tienen una variable de sesión con el índice de anuncios que estamos viendo actualmente y ciclo cada solicitud u otra cosa?

+0

No veo nada de malo en la pregunta. –

+0

@ [KingNestor]: la redacción es excelente, gracias; ahora es una pregunta general. Tu castillo ahora está hecho de piedra en lugar de arena. –

+2

Nada malo con los castillos de arena, aparte de los niños punk que los patean para arruinar el día de los demás. – ceejayoz

Respuesta

16

me gustaría utilizar OpenX, DART, Google Ad Manager, RightMedia, Rubicon, o algún otro gestor de publicidad.

Sin embargo, si quería construirlo a mí mismo como un ejercicio, me gustaría:

  1. Crear una tabla de base de datos de anuncios
  2. En mi controlador base, seleccione un anuncio al azar en el ViewData
  3. Añadir una vista parcial a su página principal para hacer el anuncio
  4. [más importante] versión de estilo MVC de uso Phil Haack de "donut caching"

Este es el mismo enfoque que utilizaría para mostrar una cita cíclica, un usuario con una presentación aleatoria o cualquier otro contenido aleatorio que desee mostrar en cada página.

1

Puede generar un número aleatorio y usarlo como una matriz para el anuncio que desea mostrar, pero no podrá garantizar una exposición pareja y podría causar muchos problemas cuando se trata de intercambio de dinero . Una aplicación que se creó para este fin es OpenX. Esto proporciona estadísticas realmente profundas y también le permite establecer cuánto se debe mostrar cada anuncio, etc. Es muy poderoso, muchos sitios web comerciales lo emplean para administrar su publicidad.

+0

Si actualiza Stackoverflow muchas veces, verá que hacen un ciclo en el mismo orden de cada actualización. – KingNestor

+0

+1 - Me gusta la idea de OpenX, pero me gustaría ver si hay una versión .net de algo similar :-) – WestDiscGolf

+0

¡OpenX es genial porque lo maneja todo por ti! Sin carga adicional en su servidor, estadísticas realmente potentes, le permite administrar cuánto se muestra cada anuncio y cuándo ect. No lo instalas en tu servidor, lo alojan todo. – Sam152

0

Tuve que escribir algo en MVC para un control de anuncios ponderado que no mostraba el mismo anuncio dos veces seguidas si era posible y en mi prisa terminé con un código terrible que podría servir como inspiración para usted .

Estoy seguro de que hay muchas formas mejores de hacer esto (y ya sé casos en que esto permite que los duplicados pasen cuando no debería) pero durante el corto período de tiempo que pasé allí hice el trabajo.

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; 
    } 
+0

Acabo de notar que desea el mismo ciclo cada vez. Debes aclarar el comportamiento en tu publicación. Veré si tengo algún código que pueda publicar. –

+0

Solo seguiría la respuesta de Portman [http://stackoverflow.com/questions/563706/how-do-i-create-rotating-ad-blocks-in-asp-net-mvc-like-stackoverflow-does/586052 # 586052] y usa cookies o variables de sesión como se sugiere para mantener la posición. –

Cuestiones relacionadas