ASP.NET Adrotator Control повторяется на всю длину страницы - PullRequest
0 голосов
/ 15 мая 2010

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

Спасибо!

1 Ответ

1 голос
/ 02 июня 2010

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

Это можно сделать с помощью нескольких технологий (AJAX.NET и UpdatePanels, обычный старый Javascript или JS-фреймворк, например, 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-инфраструктуры с .ASHX (пользовательские обработчики) или .ASMX (веб-службы) на стороне сервера. Это намного более прозрачно и понятно с точки зрения знания «что делает этот код?». UpdatePanels может показаться черной магией.

...