Domanda

Sto realizzando un sito Web che richiede che gli annunci vengano ripetuti la lunghezza di una pagina con lunghezza dinamica. Voglio che gli annunci vengano visualizzati l'intera lunghezza della pagina, ma non saprò quella lunghezza fino a quando i dati non sono stati visualizzati. Esiste una funzionalità integrata per questo in .NET? In caso contrario, qualcuno vede delle soluzioni alternative che potrei impiegare per farlo per me?

Grazie!

È stato utile?

Soluzione

Penso che risolverai meglio questo problema richiamando al server (tramite AJAX) per ottenere gli annunci dopo che la pagina è stata resa sul browser dell'utente finale.

Potresti farlo tramite diverse tecnologie (ajax.net e updatepanels, semplici javascript o un framework JS come JQuery o Mootools insieme a un servizio Web per servire gli annunci), a seconda del tuo comfort.

Con l'opzione jQuery + Ashx, puoi fare quanto segue:

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

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

Ovviamente il più integrato con ASP.NET è l'opzione UpdatePanel, anche se ti consiglio di passare a utilizzare un framework JS con .ashx (gestori personalizzati) o .asmx (servizi Web) sul lato server. È molto più trasparente e comprensibile, in termini di conoscenza "Cosa sta facendo questo codice?". UpdatePanels può sembrare Black Magic.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top