2013-09-25 3 views
0

У меня есть 10 рекламных роликов. Я хотел бы, чтобы страница показывала 1 из них случайным образом.Выберите Случайное содержимое Spot

Я попытался использовать функцию «ShowContentSpots» - но это показывает все из них & не проходит.

Каков наилучший способ сделать это?

ответ

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 только один раз и в другом месте и используйте его в этой функции.

+0

Спасибо. Я редактирую только CMS. Как мне добраться до этой функции? – niico

+0

Функции перспективы/Функции бритвы/Контент/ShowContentSpots. Может быть, хорошим подходом было бы создание другой функции Razor, основанной на этом (вы можете выбрать, какую функцию использовать при создании) и поэкспериментировать с этой скопированной функцией :) – wysocki

Смежные вопросы