2012-09-12 3 views
0

모든 페이지가 캐시 된 사이트가 있습니다. 즉 캐싱은 VaryByParam = "*"인 aspx 레벨입니다. 이제 갤럽 컨트롤을 만들 필요가 있습니다. 즉, "이 사이트는 어떻게 작동합니까?" 사용자가 응답을 클릭하면 결과가 표시됩니다.사용자 컨트롤에서 포스트 백이 포함 된 Asp.net 출력 캐시 대체

gallup은 마스터 페이지에 추가 된 usercontrol로 구현되어 gallup이 CMS에서 gallup이 생성되는 모든 페이지에 추가 될 수 있습니다. 문제는 출력 캐시가 자연스럽게 모든 클릭을 캐시하므로 사용자가 2 표를 얻지 못하면 그 대안에 대한 첫 번째 투표 이후에 계산 된 결과가 표시된다는 것입니다.

이제 캐시 대체를 사용하려고합니다. 나는 asp : Substition 태그를 추가했는데 사용자 컨트롤은 이전에 컨트롤을 동적으로로드하고 렌더링했다 (이 접근법을 사용하여 http://coderwall.com/p/4ajzqq). 문제는 투표를 트리거하는 포스트 백이 결코 실행되지 않는다는 것입니다. 명백히 substition 컨트롤이 실행하는 메서드는 페이지 수명주기 밖에서 또는 너무 늦게로드됩니다.

아이디어가 있으십니까?

감사 마티아스

답변

2

I는 교체 제어를 생략함으로써이를 해결 단지 정상적으로 사용자 제어를 사용하므로 갤럽/질문보기 출력 캐시이었다. 그런 다음 대안에 대한 클릭 핸들러에서 Response.Cache.SetNoServerCaching(); 을 추가했는데 출력 캐시에서 결과보기를 제외 했으므로 업데이트되었습니다.

0

VaryByCustom을 사용하여 Global.asax에서 Response.Cache.SetNoServerCaching()을 사용할 수도 있습니다. 페이지가 포스트 백인지 아닌지를 Global.asax에서 감지하면됩니다. Here은 코드 예제입니다.

관련 문제