2010-05-15 4 views
0

동적 길이가있는 페이지의 길이만큼 광고를 반복해야하는 웹 사이트를 만들고 있습니다. 광고가 페이지의 전체 길이 아래에 표시되기를 원하지만 데이터가 표시 될 때까지 광고 길이를 알 수 없습니다. 이 기능이 .NET에 내장되어 있습니까? 그렇지 않은 경우 누구나 나를 위해이 작업을 수행 할 수있는 대안을 볼 수 있습니까?ASP.NET Adrotator 컨트롤 전체 페이지 길이 반복

감사합니다.

답변

1

최종 사용자의 브라우저에서 페이지가 렌더링 된 후 광고를 가져 오기 위해 서버로 (AJAX를 통해) 다시 호출하여이 문제를 가장 잘 해결할 것이라고 생각합니다.

편안함에 따라 몇 가지 기술 (AJAX.NET 및 UpdatePanels, plain-old-Javascript 또는 jQuery 또는 MooTools와 같은 JS 프레임 워크와 광고를 제공하는 웹 서비스)을 통해이 작업을 수행 할 수 있습니다. 자바 스크립트에서

:

jQuery를 + ASHX의 옵션을

, 다음을 수행 할 수 있습니다

<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()); 
    } 
} 
되는 HTML에서

// 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); 
} 

Obviou ASP.NET과 가장 통합 된 것은 UpdatePanel 옵션이지만 서버 측에서 .ASHX (사용자 정의 처리기) 또는 .ASMX (웹 서비스)가있는 JS 프레임 워크를 사용하는 것이 좋습니다. "이 코드는 무엇을하고 있는가?"라는 측면에서 훨씬 투명하고 이해하기 쉽습니다. UpdatePanels는 검은 마법처럼 보일 수 있습니다.

+0

감사합니다. 나는이 문제를 해결하기 위해 비슷한 것을했지만 이것은 훨씬 더 우아합니다. –

관련 문제