2010-02-10 5 views
2

데이터 입력 양식을 동적으로 표시하는 간단한 양식이 있으며 사용자가 다시 게시를 수행하고 결과가 데이터베이스에 저장됩니다. 새 버전의 양식을 만들고 데이터베이스에 대한 정보를 기반으로 사용자가 이전 양식의 URL을 요청하면 새 * .aspx 페이지에 Server.Transfer를 수행하여 페이지를 생성하고 다시 게시를 처리합니다. 페이지의 URL이 변경되지 않기 때문에 다시 게시가 원래 페이지로 전송된다는 의미입니까? 그런 다음 포스트 백인지 확인해야하고 그렇다면 Server.Transfer를 호출하고 양식 데이터를 새 페이지로 전송할 수 있습니까?Server.Transfer를 사용하여 어떤 페이지가 포스트 백을 가져 옵니까?

답변

5

포스트 백을 "가져 오는"것이 무슨 뜻인지에 따라 다릅니다. 첫 번째 페이지는 클라이언트에서 전송 된 양식 값을 물론 게시합니다. 그러나 첫 페이지가 포스트 백 정보에 반응하는 방식은 수명주기에서 언제 Server.Transfer를 시작하는지에 달려 있습니다. 클릭 핸들러와 같이 수명주기에 매우 늦은 경우 첫 번째 페이지는 전체 포스트 백 프로세스를 거치게됩니다.

Server.Transfer의 optional parameter to preserve form values은 두 번째 페이지가 요청에 대해 다시 게시하는 것처럼 반응하는지 여부를 나타냅니다.

+0

Page.Load에서 Get 요청에 대해 Server.Transfer를 수행하고 있습니다. 따라서 전송 요청은 요청에 대해 한 번만 수행되었습니다. 이는 나에게 혼란스러운 부분입니다. 클라이언트가 (Server.Transfer에 의해 생성 된) 응답을 수신 한 다음 포스트 백을 수행하면 본래의 페이지에 논리가 있어야 Server.Transfer를 본질적으로 다시 실행할 수 있습니다. – AaronLS

+0

내가 포스트 백을 가져 오면 포스트 백이 발생하는 페이지를 의미합니다. URL에있는 페이지 또는 원본 get 요청 중에 Server.Transfer를 통해 전송 된 페이지입니다. – AaronLS

+0

@aaronls 클라이언트의 관점에서 첫 번째 페이지 만 요청을 수신합니다. 개별 페이지의 관점에서 볼 때 둘 다 동일한 요청이 수신됩니다. –

1

Server.Transfer 뒤에 페이지의 HTML 소스를보십시오. 폼의 동작이 새로운 ASPX라면 당신은 괜찮습니다.

일반 리디렉션을 사용하는 것이 더 쉬울 것입니다. 그렇게하면 이런 종류의 문제가 발생하지 않습니다.

+0

리디렉션은 다시 게시되지 않습니다. –