Frage

Ich erstelle eine Website, auf der Anzeigen auf der Länge einer Seite mit dynamischer Länge wiederholt werden. Ich möchte, dass die Anzeigen über die gesamte Länge der Seite angezeigt werden, aber ich werde diese Länge erst nach der Anzeige der Daten wissen. Gibt es in .NET eine integrierte Funktionalität? Wenn nicht, sieht jemand eine Problemumgehung, die ich für mich tun könnte?

Vielen Dank!

War es hilfreich?

Lösung

Ich denke, Sie werden dieses Problem am besten lösen, indem Sie zum Server (über AJAX) zurückrufen, um die Anzeigen zu erhalten, nachdem die Seite auf dem Browser des Endbenutzers gerendert wurde.

Sie können dies über mehrere Technologien (Ajax.net und UpdatePanels, Plain-Alt-JavaScript oder ein JS-Framework wie JQuery oder Mootools sowie einen Webdienst zum Servieren der Anzeigen) tun, je nach Komfort.

Mit JQuery + ASHX -Option können Sie Folgendes ausführen:

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

Offensichtlich ist das in ASP.NET am meisten integrierte UpdatePanel -Option. Ich würde jedoch empfehlen, ein JS -Framework mit .ashx (benutzerdefinierte Handler) oder .asmx (Web Services) auf der Serverseite zu verwenden. Es ist viel transparenter und verständlicher, um zu wissen, was dieser Code macht? UpdatePanels können wie schwarze Magie erscheinen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top