2013-03-26 4 views
0

UpdatePanel에서 ASP.Net 페이지 (마스터 페이지 사용)에 사용자 컨트롤이 있습니다. 이 컨트롤에는 버튼을 비롯한 여러 기능이 있습니다. 컨트롤을 클릭하면 클라이언트로 파일을 보내려는 링크를 제외하면 제대로 작동합니다.UserControl에서 UpdatePanel 뒤에 클라이언트에 파일 보내기

컨트롤은 표시, 동작 및 클라이언트에 전송하기 위해 선택적으로 직렬화 된 개체로 인스턴스화됩니다. 이 프로젝트에서도 UserControl이 아닌 UpdatePanel이 아닌 파일을 보냈습니다. 브라우저가 코드를 단계별로 진행할 수있는 것처럼 링크를 클릭하지 않는 것처럼 행동하며 코드가 작동 중임을 알 수 있습니다.

Response.Clear() 
Response.AppendHeader("content-disposition", "attachment; filename=assignment.ics") 
Response.ContentType = "text/xml" 

'serialization code goes here 

Response.Write(seralizedObject) 
Response.Flush() 
Response.End() 

내가 대신 Response.Close을 시도했습니다. 나도 Response.OutputStream.Write을 사용해 보았습니다. 아무것도 작동하는 것 같지 않습니다. 내가 할 수있는 일이 가능한거야? 또는 파일을 보낼 다른 페이지로 리디렉션하는 방법을 고안해야합니까?

업데이트 :받은 답변을보기 위해 실제로 파일을 보내려면 다른 URL (ashx 파일)을 가리 키도록 구현을 변경했습니다. 그것은 작동하지만 이상적이지 않습니다. 나는 아직이 제안에 대한 다른 제안을하고있다.

UpdatePanel이 작동하지 않으면 파일을 보낼 수있는 다른 파일 (예 : ashx 파일)에 '내부적으로'개체를 보내고 싶습니다. 지금은 URL querystring을 사용하여 ashx 파일의 개체를 다시 작성하기에 충분한 정보를 보내고 있습니다. 말할 필요도없이 아주 멋진 솔루션은 아닙니다.

+0

비행 중에 파일을 생성해야합니까? –

+0

@MikeC, 예, 파일은 즉시 생성되어야합니다. – cjbarth

답변

0

여러 가지 이유로 업데이트 패널을 사용하여 파일을 클라이언트에 스트리밍 할 수 없습니다. 이 AJAX 시나리오에서는 파일 스트리밍이 작동하지 않습니다. UpdatePanel을 제거한 후 올바르게 작동하는지 확인한 다음 conditional updating을 사용하십시오. 자세한 내용은 See this을 참조하십시오.

+0

'조건부 업데이트'란 무엇을 의미합니까? – cjbarth

+0

'UpdateMode = "Conditional", 지정한 조건에서만 실행됩니다. 위의 재산에 대한 링크가 포함되어 있습니다. –

관련 문제