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

谢谢!

有帮助吗?

解决方案

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

您可以通过多种技术(Ajax.net和UpdatePanels,纯老式JavaScript或JS框架(例如JQuery或Mootools)以及网络服务以提供广告的服务)来执行此操作。

使用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(自定义处理程序)或.ASHX(自定义处理程序)或.ASMX(Web Services)的JS框架迈进。就知道“该代码在做什么?”方面,它更加透明和可理解。 UpdatePanels看起来像黑魔法。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top