0

我正在制作一个网站,该网站需要在动态长度的页面长度上重复广告。我希望广告显示在页面的整个长度上,但在显示数据之前我不会知道该长度。.NET 中是否有内置功能?如果没有,有没有人看到我可以用来为我做这件事的任何解决方法?

谢谢!

4

1 回答 1

1

我认为您最好通过在最终用户的浏览器上呈现页面后回调服务器(通过 AJAX)来获取广告来解决这个问题。

您可以通过多种技术(AJAX.NET 和 UpdatePanels、plain-old-Javascript 或 jQuery 或 MooTools 等 JS 框架以及提供广告的 Web 服务)来做到这一点,具体取决于您的舒适度。

使用 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 选项,尽管我建议您在服务器端使用带有 .ASHX(自定义处理程序)或 .ASMX(Web 服务)的 JS 框架。就知道“这段代码在做什么?”而言,它更加透明和易于理解。UpdatePanel 看起来像是黑魔法。

于 2010-06-02T15:56:20.577 回答