動的な長さのページの長さで広告を繰り返す必要があるWebサイトを作成しています。ページ全体に広告を表示したいのですが、データが表示されるまでその長さはわかりません。.NETにこのための組み込み機能はありますか?そうでない場合、誰かが私のためにこれを行うために採用できる回避策を見ていますか?
ありがとう!
エンドユーザーのブラウザでページがレンダリングされた後、サーバーに(AJAX経由で)コールバックして広告を取得することで、この問題を解決するのが最善だと思います。
快適さに応じて、いくつかのテクノロジー(AJAX.NETとUpdatePanels、プレーンな古い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フレームワークの使用に移行することをお勧めします。「このコードは何をしているのか」を知るという点では、はるかに透過的で理解しやすいものです。UpdatePanelsは黒魔術のように見えることがあります。