2009-08-27 2 views
3

제 3 자 구성 요소가 Response.Write을 방해하고 Response.Write("") 내의 모든 콘텐츠가 다른 html보다 먼저 렌더링되는 문제가 발생했습니다. 예를 들어 : Response.Write와 <%= %>의 실제 차이점은 무엇입니까?

HELLO WORLD<html><head>... 

그러나, <%= %> 블록을 사용하여 렌더링되는 내용이 제대로작동합니다

<html><head><title><% Response.Write("HELLO WORLD") %> 

렌더링됩니다. 아래의 코드는 완벽하게 작동합니다

<html><head><title><%="HELLO WORLD"%> 

나는 항상 <%=Response.Write 위해 단순히 속기라고 가정한다. MSDN에서 찾을 수 있었던 것부터 지금은 <%=이고 결국은 Response.Write로 변환되었지만 분명히 몇 단계가 있습니다.

두 사람이 다르게 렌더링하거나 왜 <%= %> 블록이 처리되는지 설명하는 문서/정보를 가리키는 이유는 무엇입니까?

업데이트 : 문제의 원인이 된 컨트롤은 2009 Q1 릴리스의 Telerik AjaxManager 컨트롤입니다. Q2 컨트롤로 업그레이드하면 문제가 해결되었습니다.

소스에 액세스 할 수 없어서 컨트롤이이 문제를 일으키는 이유를 알 수 없었습니다. 이 문제는 해결되었지만 처음에는 왜 존재했는지에 대해 여전히 궁금합니다.

+0

어떤 타사 구성 요소를 사용하고 있습니까? – madcolor

+0

이 문제는 실제로 이해가되지 않습니다. 절대로 나에게 일어난 일이 ... – voyager

+0

@voyager, 전적으로 동의합니다; 이것은 말이되지 않습니다. 내 정신은 의심 스럽지만 다른 개발자는 로컬 컴퓨터에서 동일한 동작을 복제 할 수있었습니다 (동일한 프로젝트). @madcolor 많은 Telerik 컨트롤 (아약스, 모달 팝업, 그리드); –

답변

6

< % = "foo"%>는 Response.Write ("foo")로 바뀝니다. 일단 그것이 컴파일됩니다. ASP.NET Temporary Files 폴더를 파고 Reflector를 사용하여 dll을 디 컴파일하면이 사실을 확인할 수 있습니다.