Управление ASP.NET Adrotator повторяется для длины всей страницы

StackOverflow https://stackoverflow.com/questions/2838409

  •  26-09-2019
  •  | 
  •  

Вопрос

Я делаю веб-сайт, который требует, чтобы реклама была повторена длина страницы с динамической длиной. Я хочу, чтобы реклама была отображена по всей длине страницы, но я не буду знать эту длину до тех пор, пока данные не будут отображены. Есть ли встроенные функциональные возможности для этого в .NET? Если нет, кто-нибудь увидит какие-либо обходные пути, которые я мог бы использовать, чтобы сделать это для меня?

Спасибо!

Это было полезно?

Решение

Я думаю, что вы лучше всего решаете эту проблему, позвонив обратно на сервер (через AJAX), чтобы получить рекламу после оказания страницы на браузере конечного пользователя.

Вы можете сделать это через несколько технологий (ajax.net и updativePanels, prom-old-javaScript или js framework, как jQuery или mootools вместе с веб-сервисом для обслуживания рекламы), в зависимости от вашего комфорта.

С опцией jQuery + Ashx вы можете сделать следующее:

В JavaScript:

// when the document has finished loading
$(document).load(function() {

    // make an AJAX request to MyHandler.ashx, with the content's height
    var height = $("#ContentContainer").height()
    $.get("MyHandler.ashx?contentheight=" + height, ResponseCallback);
}

// put the server's response (data) into the ad container
function ResponseCallback(data) {
    $("#AdContainer").html(data);
}

В HTML:

<body>
  <div id="ContentContainer">
     ... 
     ...
  </div>
  <div id="AdContainer"></div>
</body>

Myhandler.ashx:

public void ProcessRequest(HttpContext context) {
    HttpRequest request = context.Request;
    HttpResponse response = context.Response;

    int height = Convert.ToInt32(request.QueryString["contentheight"] ?? "0");

    // do something to calculate number of ads and get the HTML for the ads
    // assuming we have a list of Advert objects:
    List<Advert> ads = GetSomeAds(height);

    foreach(Advert a in ads) {
        response.Write(a.GetHtml());
    }
}

Очевидно, что наиболее интегрирован с ASP.NET - это опция updatePanel, хотя я бы порекомендовал, чтобы вы передвигаетесь к использованию js framework с .ashx (пользовательские обработчики) или .asmx (веб-сервисы) на стороне сервера. Это гораздо более прозрачно и понятно, с точки зрения знания «Что делает этот код?». UpdatePanels может показаться черной магией.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top