2010-05-15 54 views
0

我正在制作一个网站,要求广告沿着动态长度的页面长度重复。我希望广告能够沿着整个页面展示,但直到数据显示之后,我才会知道这个长度。 .NET中是否有这样的功能?如果没有,有没有人看到我可以用来为我做这个解决方法?ASP.NET Adrotator控件重复整个页面的长度

谢谢!

回答

1

我认为,通过回调服务器(通过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可以看起来像黑魔法。

+0

非常感谢。我做了类似的事情来解决问题,但这更优雅。 – 2010-06-03 09:34:47