0
我正在制作一个网站,要求广告沿着动态长度的页面长度重复。我希望广告能够沿着整个页面展示,但直到数据显示之后,我才会知道这个长度。 .NET中是否有这样的功能?如果没有,有没有人看到我可以用来为我做这个解决方法?ASP.NET Adrotator控件重复整个页面的长度
谢谢!
我正在制作一个网站,要求广告沿着动态长度的页面长度重复。我希望广告能够沿着整个页面展示,但直到数据显示之后,我才会知道这个长度。 .NET中是否有这样的功能?如果没有,有没有人看到我可以用来为我做这个解决方法?ASP.NET Adrotator控件重复整个页面的长度
谢谢!
我认为,通过回调服务器(通过AJAX)以在页面呈现在最终用户的浏览器后获取广告,您将最好地解决此问题。
根据您的舒适程度,您可以通过多种技术(AJAX.NET和UpdatePanels,普通旧式Javascript或JS框架,如jQuery或MooTools以及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());
}
}
Obviou狡猾与ASP.NET最集成的是UpdatePanel选项,尽管我会建议您在服务器端使用带有.ASHX(自定义处理程序)或.ASMX(Web服务)的JS框架。就知道“代码在干什么?”而言,它更加透明和易于理解。 UpdatePanels可以看起来像黑魔法。
非常感谢。我做了类似的事情来解决问题,但这更优雅。 – 2010-06-03 09:34:47