Microsoft MVP성태의 닷넷 이야기
.NET Framework: 62. ASP.NET 웹 컨트롤 렌더링 가로채기 [링크 복사], [링크+제목 복사],
조회: 22278
글쓴 사람
정성태 (techsharer at outlook.com)
홈페이지
첨부 파일
 


ASP.NET에서의 웹 컨트롤을 작성하다 보면, 특정 컨트롤의 출력을 알고 싶은 경우가 있습니다.

아는 것 뿐만 아니라, 해당 컨트롤의 출력이 웹 페이지로 출력되기 전에, 원하는 조작을 하고 싶을 때도 있습니다.

방법은 그다지 어렵지 않습니다. 아시겠지만, 웹 컨트롤은 일반적으로 Render 함수에서 그 출력을 정의하게 되는 데, 다음과 같은 Signature를 가지고 있습니다.

override protected void Render( System.Web.UI.HtmlTextWriter writer )
{
}

오호... 딱 보기만 해도 이미 답은 나왔습니다. ^^

우선, 출력을 가로채고 싶은 웹 컨트롤을 상속받습니다. 만약 TextBox 라면,

public class MyTextBox : TextBox
{
	override protected void Render( System.Web.UI.HtmlTextWriter writer )
	{
		StringWriter strWriter = new StringWriter();
		HtmlTextWriter htmlWriter = new HtmlTextWriter( strWriter );
		base.Render( htmlWriter );
		writer.Write( htmlWriter.InnerWriter.ToString() );
	}
}

위와 같이, 동일하게 HtmlTextWriter 를 인자로 전달하면 되는 것입니다. 그럼, base 클래스 - 즉 TextBox 클래스는 넘겨진 htmlWriter를 이용해서 해당 클래스의 내용을 출력해 줄 것이고, 이후 개발자의 입맛에 맞게 htmlWriter.InnerWriter.ToString() 값을 적절하게 조절한 다음에 원래의 writer.Write 메서드를 이용해서 출력해 주면 되는 것입니다.

기억해 두어야 할 것은... ASP.NET 웹 컨트롤은 아무리 날고 기어봐야 결국엔 HTML 문자열일 뿐이라는 사실.






[최초 등록일: ]
[최종 수정일: 4/14/2006]

Creative Commons License
이 저작물은 크리에이티브 커먼즈 코리아 저작자표시-비영리-변경금지 2.0 대한민국 라이센스에 따라 이용하실 수 있습니다.
by SeongTae Jeong, mailto:techsharer at outlook.com

비밀번호

댓글 작성자
 




... 181  182  183  184  [185]  186  187  188  189  190  191  192  193  194  195  ...
NoWriterDateCnt.TitleFile(s)
413정성태12/20/200629128VC++: 26. volatile 키워드 [1]파일 다운로드1
412정성태12/17/200633186오류 유형: 22. VS.NET 2005 SP1 설치 도중 오류 [9]
411정성태12/16/200622268오류 유형: 21. TFS SP1 설치 관련 오류 (2) - KB919156 패치 이후 TFS 접근 문제
410정성태12/16/200623362오류 유형: 20. TFS SP1 설치 관련 오류 (1) - KB919156 패치
408정성태12/10/200625694Windows: 7. USB 드라이브 내용 암호화
407정성태12/10/200622904오류 유형: 19. Vista 에서의 VS.NET 2005 로 개발한 어셈블리에 대한 서명 확인 오류
406정성태12/10/200627856Windows: 6. IE 7 검색 공급자 - 영한 사전
403정성태12/6/200634999Windows: 5. Vista 와 웹 인증 등록 서비스의 문제 [5]
402정성태12/11/200626072Windows: 4. Vista 설치 후기 [1]
409정성태12/11/200630081    답변글 Windows: 4.1. Vista 설치 후기 - 두 번째 이야기 [3]
396정성태2/13/200732622오류 유형: 18. "Automatic Updates" 서비스 CPU 100% 점유 현상
393정성태11/8/200622205오류 유형: 17. Unable to start debugging - The binding handle is invalid.
371정성태10/23/200621555오류 유형: 16. STS Communication failed.
370정성태11/12/200625413.NET Framework: 75. Windows CardSpace 이야기 (이 글의 내용은 재작성되어질 예정입니다.)
375정성태10/25/200627325    답변글 .NET Framework: 75.1. 개인 발행 카드에 대한 Microsoft 예제 실습(이 글의 내용은 재작성되어질 예정입니다.)
376정성태10/27/200626995    답변글 .NET Framework: 75.2. "Windows CardSpace"와 "인증서 서비스"의 만남(이 글의 내용은 재작성되어질 예정입니다.)
377정성태10/26/200626828    답변글 .NET Framework: 75.3. Managed Card 발행에 대한 Microsoft 예제 실습 (1) - CardWriter (이 글의 내용은 재작성되어질 예정입니다.)
385정성태11/6/200629206    답변글 .NET Framework: 75.4. Managed Card 발행에 대한 Microsoft 예제 실습 (2) - STS 구현 (이 글의 내용은 재작성되어질 예정입니다.) [7]
387정성태11/2/200630182    답변글 .NET Framework: 75.5. Windows CardSpace와 SYSNET 사이트의 만남 (이 글의 내용은 재작성되어질 예정입니다.) [1]
397정성태11/11/200627678    답변글 .NET Framework: 75.6. CardWriter.csproj와 함께 알아보는 인증서 식별 방법(이 글의 내용은 재작성되어질 예정입니다.)
398정성태11/12/200626046    답변글 .NET Framework: 75.7. 카드에 암호 거는 방법(이 글의 내용은 재작성되어질 예정입니다.)
399정성태11/12/200628258    답변글 .NET Framework: 75.8. 인증서/스마트 카드에 기반한 Managed Card - STS 구현(이 글의 내용은 재작성되어질 예정입니다.) [5]
369정성태10/22/200623642오류 유형: 15. 자동 업데이트 실패
367정성태10/22/200639702Windows: 3. IIS 7.0 다중 바인딩 설정하는 방법 [1]
365정성태10/21/200622864Windows: 2. 서버(build 5600)에 IIS 7.0 서비스와 .NET 3.0 설치 방법
359정성태10/17/200619132오류 유형: 14. VS.NET 빌드 오류 - FxCopCmd.exe returned error code 65.
... 181  182  183  184  [185]  186  187  188  189  190  191  192  193  194  195  ...