Как создать вращающиеся рекламные блоки в ASP.NET MVC?
Как бы вы реализовали вращающийся рекламный блок с обновлением каждой страницы, аналогично тому, что делает SO, используя ASP.NET MVC?
Считаете ли вы, что у них есть переменная сеанса с тем, какой рекламный индекс мы просматриваем в настоящее время, и циклически обрабатываем его каждый запрос или что-то еще?
Ответы
Ответ 1
Я бы использовал OpenX, DART, Менеджер объявлений Google, RightMedia, Rubicon или какой-либо другой менеджер объявлений.
Однако, если бы я хотел сам создать его как упражнение, я бы:
- Создать таблицу объявлений в базе данных
- В моем базовом контроллере выберите произвольное объявление в ViewDatali >
- Добавьте частичный вид вашей главной страницы для рендеринга объявления.
- [Самое главное] Используйте версию в стиле MVK от Phil Haack "кэширование пончиков "
Это тот же подход, который вы использовали бы для отображения циклической цитаты, случайного пользователя или любого другого случайного контента, который вы хотите отображать на каждой странице.
Ответ 2
Я не знаю MVC, но есть ли что-то, препятствующее вам использовать элемент управления AdRotator?
http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.adrotator.aspx
Ответ 3
Вы можете просто создать случайное число и использовать его в качестве ключа массива для объявления, которое вы хотите отобразить, но вы не сможете обеспечить равномерную экспозицию, и это вызовет много проблем, когда дело доходит до обмена денег. Приложение, которое было создано для этой цели, OpenX. Это обеспечивает действительно глубокую статистику, а также позволяет указать, сколько должно отображаться каждое объявление и т.д. Его очень мощные, многие коммерческие сайты используют его для управления своей рекламой.
Ответ 4
Мне пришлось написать что-то в 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;
}
Ответ 5
Следующие блоги позволят начать работу с реализацией Ad Rotator.
1) Ниже в ASP.NET, но все еще полностью Jquery и простой.
http://dongavipul.blogspot.in/2011/02/jquery-adrotator-like-aspnet-adrotator.html
2) Ниже приводится реализация метода Helper для рекламного ротатора.
http://weblogs.asp.net/rashid/archive/2009/04/20/adrotator-for-asp-net-mvc.aspx