Controle do Adrotator ASP.NET Repetindo para o comprimento da página inteira

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

  •  26-09-2019
  •  | 
  •  

Pergunta

Estou criando um site que exige que os anúncios sejam repetidos na duração de uma página com comprimento dinâmico. Quero que os anúncios sejam exibidos por toda a extensão da página, mas não saberei esse comprimento até que os dados sejam exibidos. Existe funcionalidade construída para isso no .NET? Caso contrário, alguém vê alguma solução alternativa que eu poderia empregar para fazer isso por mim?

Obrigado!

Foi útil?

Solução

Eu acho que você resolverá melhor esse problema ligando de volta ao servidor (via Ajax) para obter os anúncios após a página renderizada no navegador do usuário final.

Você pode fazer isso através de várias tecnologias (Ajax.net e UpdatePanels, Javascript liso ou uma estrutura JS como jQuery ou MooTools, juntamente com um serviço da web para servir os anúncios), dependendo do seu conforto.

Com a opção JQuery + ASHX, você pode fazer o seguinte:

No 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);
}

No 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());
    }
}

Obviamente, o mais integrado ao ASP.NET é a opção UpdatePanel, embora eu recomendasse que você vá para o uso de uma estrutura JS com .ashx (manipuladores personalizados) ou .asmx (serviços da Web) no lado do servidor. É muito mais transparente e compreensível, em termos de saber "o que esse código está fazendo?". O UpdatePanels pode parecer magia negra.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top