ASP.NET Adrotator Control повторяется на всю длину страницы
Я делаю сайт, который требует, чтобы объявления повторялись по длине страницы с динамической длиной. Я хочу, чтобы объявления отображались по всей длине страницы, но я не буду знать эту длину до тех пор, пока данные не будут отображены. Есть ли встроенная функциональность для этого в.NET? Если нет, кто-нибудь видит какие-либо обходные пути, которые я мог бы использовать, чтобы сделать это для меня?
Спасибо!
1 ответ
Я думаю, что вы лучше всего решите эту проблему, перезвонив на сервер (через 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, хотя я бы порекомендовал вам перейти к использованию JS-фреймворка с.ASHX (пользовательские обработчики) или.ASMX (веб-службы) на стороне сервера. Это намного более прозрачно и понятно с точки зрения знания "что делает этот код?". UpdatePanels может показаться черной магией.