2013-06-08 8 views
0

우리는 페이지의 여러 부분에서 작업하는 많은 사람들로 구성된 팀을 가질 것이므로 재사용 가능한 Usercontrols로 페이지의 여러 섹션을 나누기로했습니다.UpdatePanels를 사용하는 여러 수준의 UserControls

그러나 하나의 컨트롤에 문제가 있습니다.

먼저, 무슨 일이 일어나고 있는지 생각해 보겠습니다. 또한 우리는 첫째로 레이아웃 페이지가 http://www.elycity.co.uk/Business/BusinessNew2.aspx?businessid=24

에서이 문제를 볼 수 있습니다 BusinessNew2.aspx

각 섹션은 webcontrol하지만 마지막 부분을 가지고

합니다. CompanyInformation 섹션에는 여러 다른 UserControl이 있습니다.

모든 버튼을 클릭에 나와있는 연락처 (businesscontact.ascx)

제외하고 잘 작동의 Tabs.ascx이 재설정되고 그것은 Information.ascx 탭으로 돌아갑니다.

BusinessContact.ascx

<%@ Control Language="VB" AutoEventWireup="false" CodeFile="BusinessContact.ascx.vb"  Inherits="BusinessListing.BusinessContact" %> 
<asp:UpdatePanel ID="updMain" runat="server" > 
<ContentTemplate> 
<asp:Panel ID="pnlContactMain" runat="server" > 
    <h3>Send <asp:literal ID="litCompanyName" runat="server" /> a message</h3> 
    <div class="form-horizontal"> 
     <div class="control-group"> 
      <label class="control-label" for="inputName">Name</label> 
      <div class="controls"> 
       <asp:textbox type="text" id="txtName" placeholder="Name" runat="server" /> 
      </div> 
     </div> 
     <div class="control-group"> 
      <label class="control-label" for="inputEmail">Email</label> 
      <div class="controls"> 
       <asp:textbox id="txtEmail" placeholder="Email" runat="server" /> 
      </div> 
     </div> 
     <div class="control-group"> 
      <label class="control-label" for="inputPhone">Telephone No</label> 
      <div class="controls"> 
       <asp:textbox id="txtPhone" placeholder="Telephone" runat="server" /> 
      </div> 
     </div> 
     <div class="control-group"> 
      <label class="control-label" for="inputMessage">Message</label> 
      <div class="controls"> 
       <asp:TextBox Height="40" TextMode="MultiLine" id="txtMessage" placeholder="Message" runat="server" /> 
      </div> 
     </div> 


     <div class="control-group"> 
      <label class="control-label" for="inputMessage"></label> 
      <div class="controls"> 
       <asp:Button ID="btnSendMessage" runat="server" Text="Send Message" /> 
      </div> 
     </div> 


    </div> 
    </asp:Panel> 


    <asp:Panel ID="pnlContactSent" runat="server" Visible="false"> 
     <div class="hero-unit"> 
      <h2>Email has been sent</h2> 
     </div> 
    </asp:Panel> 
</ContentTemplate> 
</asp:UpdatePanel> 

그냥 테스트, 코드 숨김 동안 :

Namespace BusinessListing 
Partial Class BusinessContact 
    Inherits System.Web.UI.UserControl 

    Protected Sub btnSendMessage_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnSendMessage.Click 
     pnlContactMain.Visible = False 
     pnlContactSent.Visible = True 
    End Sub 
End Class 
End Namespace 

그래서 내가 뭘 놓친 거지. 왜 이것이 상위 컨트롤러에 대해 전체 포스트 백을 수행하고 있으며이를 방지 할 수 있습니까?

감사 마크

답변

1

당신은 tabs.ascx에 대한 코드를 제공 한 적이 없다,하지만 난 당신이 업데이트 패널에서 포스트 백을 트리거한다 제어하는 ​​정의되지 않은 것 같아요 것이다.

즉, 하위 UserControls의 포스트 백을 포함하여 tabs.ascx의 UpdatePanel에있는 컨트롤의 모든 포스트 백이 패널을 업데이트하고 있음을 의미합니다.

당신이 사용하는 경우 :

<asp:UpdatePanel id="upanelInfo" runat="server" ... > 
    <ContentTemplate> 
     ... 
    </ContentTemplate> 
    <Triggers> 
     <asp:AsyncPostBackTrigger ControlID="buttonXXX" EventName="Click" /> 
     .... 
    </Triggers> 
</asp:UpdatePanel> 
+0

덕분에, 나는 모두이 방법을 포기하기로 결정했습니다. 당신이 자식 것들을 사용하도록 당신의 방법을 묶어 두었다면, UpdatePanels의 실제 사용이 무엇인지 질문하게한다. –