ASP.NET Control del Adrotador Repetición para la longitud de la página completa

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

  •  26-09-2019
  •  | 
  •  

Pregunta

Estoy haciendo un sitio web que requiere que los anuncios se repitan a lo largo de una página con una longitud dinámica. Quiero que los anuncios se muestren toda la longitud de la página, pero no sabré esa longitud hasta que se muestren los datos. ¿Hay funcionalidad incorporada para esto en .NET? Si no, ¿alguien ve alguna solución que pueda emplear para hacer esto por mí?

¡Gracias!

¿Fue útil?

Solución

Creo que resolverá mejor este problema llamando al servidor (a través de AJAX) para obtener los anuncios después de que la página haya presentado el navegador del usuario final.

Puede hacer esto a través de varias tecnologías (Ajax.net y UpdatePanels, JavaScript simple o un marco JS como JQuery o Mootols junto con un servicio web para servir los anuncios), dependiendo de su comodidad.

Con la opción jQuery + ashx, puede hacer lo siguiente:

En el 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);
}

En el 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, la más integrada con ASP.NET es la opción UpdatePanel, aunque le recomendaría que avance hacia el uso de un marco JS con .AsHX (manejadores personalizados) o .Asmx (Servicios web) en el lado del servidor. Es mucho más transparente y comprensible, en términos de saber "¿Qué está haciendo este código?". UpdatePanels puede parecer magia negra.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top