문제

ASP.NET 1.1 응용 프로그램이 있는데 다른 값(부모-자식 관계)을 채우는 데 사용되는 ComboBox를 변경할 때 두 개의 포스트백이 생성되는 이유를 찾으려고 합니다.

코드를 확인하고 확인해봐도 원인을 찾을 수 없습니다.

다음은 page_load로 끝나는 두 호출 스택입니다.

첫 번째 포스트백(ComboBox의 자동 포스트백에 의해 생성됨)

포스트백 호출 스택 http://www.juanformoso.com.ar/images/callstack1.jpg

두 번째 포스트백(이것이 왜 발생하는지 알고 싶은 것입니다)

대체 텍스트 http://www.juanformoso.com.ar/images/callstack2.jpg

어떠한 제안?무엇을 확인할 수 있나요?

도움이 되었습니까?

해결책

이 코드에는 매우 특정한 문제가 있습니다. 다른 사람에게 유용할지는 의심스럽습니다. 그러나 여기에는 다음과 같은 내용이 있습니다.

콤보에 체크가 추가되었습니다. onchange if를 사용하면 조건이 충족되면 포스트백 함수가 명시적으로 호출됩니다.콤보가 설정된 경우 AutoPostback, asp.net은 포스트백 호출을 다시 추가하여 두 개의 포스트백을 생성했습니다.

생성된 HTML은 다음과 같았습니다.

[select onchange="javascript: if (CustomFunction()){__doPostBack('name','')}; __doPostBack('name','')"]

다른 팁

내가 가장 먼저 찾아야 할 것은 두 번째 ComboBox의 AutoPostBack 속성이 true로 설정되어 있지 않다는 것입니다.해당 속성이 true로 설정된 두 번째 콤보의 값을 변경하면 해당 컨트롤에 대한 포스트백이 생성될 것이라고 생각합니다.

공유할 수 있는 코드가 있나요?이중 포스트백은 예전 ASP에서 저를 너무나 괴롭혔기 때문에 마침내 .NET으로 완전히 전환하게 되었습니다..NET에서 이와 같은 문제가 발생할 때마다 저는 모든 Control과 load, init, prerender, click, SelectedIndexChanged 등과 같은 모든 PAGE 요소로 이동하여 중단점을 설정합니다.

거기에 코드가 없더라도 다음과 같은 내용을 삽입하겠습니다.

Dim i As Integer
i = 0

나는 일반적으로 예상하지 못한 일부 작업을 정확히 찾아내고 필요에 따라 수정할 수 있습니다.여기서 그렇게 하라고 제안하고 싶습니다.

행운을 빌어요.

Request.Form["__EVENTTARGET"]을 확인하여 포스트백을 시작하는 컨트롤을 찾으세요. 범위를 좁히는 데 도움이 될 수 있습니다.

호출 스택 및 일부 반사(ASP.NET 2에 - 1.1이 편리하지 않음)를 살펴보면 SessionStateModule.PollLockedSessionCallback이 HttpApplication 시작 루틴의 일부인 것처럼 보입니다.귀하의 앱이 재활용되고 있을 가능성이 있습니다. 이에 대한 이벤트가 이벤트 로그에 기록될 것이라고 확신합니다.

내가 제안하는 유일한 다른 제안은 Fiddler나 클라이언트에서 HTTP 트래픽을 캡처하는 것입니다.

이것은 매우 오래된 게시물이지만 사람들은 지난 주에 했던 것과 똑같은 해결책을 찾기 위해 여전히 이 게시물을 찾고 있습니다.

Grengby가 말했듯이 Double 이벤트가 주된 이유이지만 그 중 하나를 제거하는 것이 항상 선택 사항은 아닙니다.적어도 제 경우에는 제3자의 애플리케이션에서 이 문제를 해결해야 했습니다.

다음 스크립트를 추가하고 마스터 페이지에 ASP 양식을 수정했습니다.

<script>var Q = 0;</script>
<form id="Form1" runat="server" onsubmit="Q++; if(Q==1){return true;} else { return false;}">

이것이 효과가 있는 것 같습니다. 귀하의 의견을 전달해 주시기 바랍니다.

아룬

http://www.velocityreviews.com/forums/t117900-asp-net-multiple-postback-issue.html

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top