2013-02-27 2 views
0

매우 복잡한 필터링 된 검색 페이지가있는 C# .net 4.0 웹 사이트 프로젝트가 있습니다. 리피터 내에 추가 된 UpdatePanel은 여러 개 있습니다. 하나의 UpdatePanel이 포스트 백을 수행하면 다른 모든 UpdatePanels도 동시에 포스트 백합니다.모든 UpdatePanels가 동시에 게시됩니다.

사용자가 보려는 항목의 수에 따라 많은 UpdatePanels가있을 수 있으므로 문제가됩니다. 나는 UpdatePanels가 이상하지 않다는 것을 안다 - 나는 이것을 쓰지 않았다. 그러나 그것을 빨리 고치려고 노력해야한다!

리피터 컨트롤이있는 UpdatePanel이있는 LandingPage가 있습니다. 리피터에는 Article이라는 사용자 정의 컨트롤이 있습니다. 아티클 컨트롤에는 저장이라는 HTML과 두 번째 사용자 컨트롤이 포함되어 있습니다. 저장 컨트롤에는 UpdatePanel도 있습니다.

내가 가진 문제는 첫 번째 btnSave 이벤트 만 발생한다는 것입니다. 따라서 "btnSave"를 클릭하면 작동하지만 이후의 모든 버튼 클릭 이벤트는 발생하지 않습니다.

동시에 Save 컨트롤 포스트 백의 UpdatePanel 인스턴스가 모두 이와 같은 현상이 나타났습니다.

그래서 페이지의 단순화 된보기과 같이이다 :

LandingPage.aspx

<asp:UpdatePanel ID="pnl" runat="server" UpdateMode="Conditional" ChildrenAsTriggers="false"> 
    <ContentTemplate> 
    <asp:Repeater ID="resultsRep" runat="server"> 
     <ItemTemplate> 
     <uc:Article id="Article1" runat="server" /> 
     </ItemTemplate> 
    </asp:Repeater> 
    <asp:Button id="btnLoadMore" runat="server" Text="Load More" /> 
    </ContentTemplate> 
    <Triggers> 
    <asp:AsyncPostBackTrigger ControlID="btnLoadMore" EventName="Click" /> 
    </Triggers> 
<asp:UpdatePanel> 

에게 사용자 정의 사용자 제어 "조"

<asp:PlaceHolder ID="ArticlePanel" runat="server"> 
    <!-- Assorted HTML stuff here --> 
    <uc:Save id="Save1" runat="server" /> 
</asp:PlaceHolder> 

사용자 정의 사용자 제어 '저장'

<asp:UpdatePanel ID="ctl" runat="server" UpdateMode="Conditional" ChildrenAsTriggers="True"> 
    <ContentTemplate> 
    <asp:LinkButton ID="btnSave" runat="server" OnClick="btnSave_Click" CausesValidation="False" Text="Save" /> 
    </ContentTemplate> 
</asp:UpdatePanel> 

언제나처럼 미리 감사드립니다. 그래서 어떻게 든 난 다시 게시하고 보인다

505|error|500|Invalid postback or callback argument. 
Event validation is enabled using <pages enableEventValidation="true"/> in configuration or <%@ Page EnableEventValidation="true" %> in a page. 
For security purposes, this feature verifies that arguments to postback or callback events originate from the server control that originally rendered them. 
If the data is valid and expected, use the ClientScriptManager.RegisterForEventValidation method in order to register the postback or callback data for validation.| 

을 :

편집

추가 조사 후, 파이어 버그 콘솔을 사용하여 나는 다음과 같은 오류가 발생하기 때문에 후속 포스트 백 발생하지 않는 것을 발견 뭔가 사납다?

답변

0

문제는 중첩 된 UpdatePanels의 사용으로 떨어졌습니다. 오류 자체가 실제로 어디서 왔는지는 모르겠지만 시행 착오 후 부모 UpdatePanel이 제대로 구성되지 않았다는 것을 알았습니다.

부모 UpdatePanel

은과 같이 있었어야 :

<asp:UpdatePanel ID="pnl" runat="server" UpdateMode="Always" ChildrenAsTriggers="true"> 

의 차이는 = "항상"UpdateMode를 인과 = "true"를 ChildrenAsTriggers. UpdateMode는 부모 UpdatePanel에게 자식이 다시로드 될 때 새로 고침을 지시합니다. ChildrenAsTriggers 특성을 사용하면 자식 UpdatePanels에서 부모를 새로 고칠 수 있습니다.

이제 작동합니다. 대부분. 매번 UpdatePanels를 게시 할 때마다 여전히 문제가 있습니다. 그게 정말 비효율적이지만 나는 그것을 멈출 수없는 것 같습니다.

+0

나는 단지 그 UpdatePanels이 악하다고 덧붙이고 싶다.나는 jQuery AJAX와 ASHX 핸들러를 사용하는 것을 선호한다 - 간단하고 유연하다. –

관련 문제