2010-03-28 2 views
5

도넛 캐싱의 대체 기능을 사용하고 싶습니다.ASP .NET - 대체 및 페이지 출력 (도넛 형) 캐싱 - HttpResponseSubstitutionCallback 대리자에 사용자 지정 인수를 전달하는 방법

public static string GetTime(HttpContext context) 
{ 
    return DateTime.Now.ToString("T"); 
} 

...

The cached time is: <%= DateTime.Now.ToString("T") %> 
<hr /> 
The substitution time is: 
<% Response.WriteSubstitution(GetTime); %> 

...하지만 HttpContext를 옆에 기능을 콜백하기 위해 추가 매개 변수를 전달하고 싶습니다.
질문은 다음과 같습니다.
GetTime 콜백에 추가 인수를 전달하는 방법은 무엇입니까? 예를 들어
, 이런 식으로 뭔가 :

public static string GetTime(HttpContext context, int newArgument) 
{ 
    // i'd like to get sth from DB by newArgument 
    // return data depending on the db values 

    // ... this example is too simple for my usage 
    if (newArgument == 1) 
     return ""; 
    else 
     return DateTime.Now.ToString("T"); 
} 
+1

그래서 내가 찾고 있던 대답은 : 완료 할 수 없다 :) 내 상황에 문제는 내가 dinamically 여러 (> = 0) POLL 컨트롤을 페이지에 삽입하고 각 컨트롤을 기반으로 렌더링 할 on 인수 (UserID 및 PollID. 사용자가 이미 투표 한 경우 각 컨트롤에 대해 투표 양식 대신 폴링 결과가 있어야 함). 그래서 나는 다른 기능을 정의 할 수 없다. 결국 ajax 호출을 사용하여 $ (document) .ready 이벤트에서 투표 된 각 폴에 대한 결과를 검색했습니다. 하지만 더 나은 솔루션을 원했습니다 ... 도움을 주신 모든 분께 – zzare

답변

2

그렇지 않은 경우 웹 사이트의 다른 위치에서 출력 대체를 사용하기 때문에 다른 인수를 기반으로하는 다른 출력을 원한다는 것이 문제라면 다른 방법이나 기능을 정의하는 것이 두려운 것입니다. 인수를 가지는 실제 메소드의 스텁으로 만 대체 메소드를 사용하십시오.

1

글쎄, 당신은 당신이 세션에 필요한 모든 인수를 저장할 수 있습니다. GetTime 메서드에서 이러한 인수는 HttpContext를 통해 액세스 할 수 있습니다.

+0

'대체'컨트롤을 사용하는 경우 '세션'을 사용할 수 없습니다. 'Context' 인스턴스에 나열되어 있지만 정적 콜백 메소드에서는 대체 기능을 통해 호출 할 때 초기화되고로드되지 않으므로 항상 null입니다. –