2010-05-07 8 views
3

업로드 컨트롤과 업로드 할 단추가있는 UpdatePanel이 있습니다. 단추가 트리거로 설정되어 있지만 단추의 이벤트 처리기가 첫 번째 PostBack에서 실행되지 않습니다.ASP.NET - PostBack 트리거가있는 FileUpload

내 ASPX 코드는 다음과 같습니다

<asp:UpdatePanel ID="updPages" runat="server" UpdateMode="Conditional"> 
    <ContentTemplate> 
     <div class="tabs"> 
      <ul> 
       <li><asp:LinkButton ID="lnkContentsPages" runat="server" OnClick="updateContents" CommandArgument="pages">Pages</asp:LinkButton></li> 
     <%-- these tabs change the ActiveViewIndex to show a different UserControl --%> 
       <li><asp:LinkButton ID="lnkContentsImages" runat="server" OnClick="updateContents" CommandArgument="images">Images</asp:LinkButton></li> 
      </ul> 
      <div class="tabbedContent"> 
       <asp:MultiView runat="server" ID="mltContentsInner" ActiveViewIndex="0"> 
        <asp:View ID="viwContentsImages" runat="server"> 
         // ajax usercontrol for a list of images - works fine with ajax 
         <fieldset> 
          <legend>Upload New</legend> 
          <div class="formRow"> 
           <asp:Label ID="lblFile" runat="server" Text="Filename" AssociatedControlID="uplFile" /> 
           <asp:FileUpload ID="uplFile" runat="server" /> 
          </div> 
          <div class="formRow"> 
           <asp:Label ID="lblImageDescription" runat="server" Text="Description" AssociatedControlID="txtImageDescription" /> 
           <asp:TextBox runat="server" ID="txtImageDescription" /> 
          </div> 
          <asp:Button ID="btnUpload" runat="server" Text="Upload" CssClass="c3button btnUpload" CausesValidation="false" OnClick="btnUpload_Click" /> 
         </fieldset> 
        </asp:View> 
        <asp:View ID="viwContentsPages" runat="server"> 
         // ajax usercontrol - works fine with ajax 
        </asp:View> 
       </asp:MultiView> 
      </div> 
     </div> 
    </ContentTemplate> 
    <Triggers> 
     <asp:PostBackTrigger ControlID="btnUpload" /> 
    </Triggers> 
</asp:UpdatePanel> 

버튼의 작품이없는 첫번째뿐만 아니라 두 번째 번 연속 실패. 이것에 대한 이유가 있습니까?

+0

이 문제를 해결하는 행운이 있으십니까? – Jonathan

+0

불행히도. 행동이 간헐적 인 것처럼 보이는데 이는 최악의 유형의 버그입니다. – Echilon

+0

서버 측 코드를 추가 할 수 있습니까? – chapluck

답변

1

왜 이런 일이 발생하는지 알지 못합니다. 그러나 aspx.cs 파일에서 OnInit 페이지주기 이벤트를 재정 의하여 직접 이벤트를 추가하려고 할 수 있습니다. HTML 페이지에서 Click 이벤트를 제거하십시오.

protected override void OnInit(EventArgs e) 
{ 

btnUpload.Click+= new EventHandler(btnUpload_Click); 
base.OnInit(e); 
} 

는 또한 트리거는 직접

<asp:UpdatePanel ID="updPages" runat="server" UpdateMode="Conditional"> 
<Triggers> 
     <asp:PostBackTrigger ControlID="btnUpload" /> 
    </Triggers> 
+0

고마워,하지만 이건 작동하지 않았다 .. – Echilon

1

어쩌면 AJAX가 처음으로 다시 게시하고 년대 된 UpdatePanel 태그 아래에 위치해야 할 수 있습니다? UpdatePanel에서 ChildrenAsTriggers="false" 속성을 추가해보세요. 당신이이 포스트 백을 야기 할 모든 제어를 위해, 당신은 UpdatePanel의 Triggers 섹션에 AsyncPostBackTrigger을 추가해야하므로

이는 비동기 포스트 백을 일으키는 원인이되는 UpdatePanel의 모든 컨트롤을 중지합니다.

+0

내가 생각한 게 아니지만 효과가 없었다. – Echilon

3

페이지의 양식 태그에 enctype = "multipart/form-data"를 추가해야합니다.

같은 문제에 직면하고 위의 작업은 주위가 첫 번째 시도에서 파일을 업로드했다. 어떤 사람들은 그것이 유용 할 수 있기를 바랍니다.

0

anbalagan의 답변과 다른 질문의 대답에 따르면 양식 요소의 enctype 속성을 'multipart/form-data'로 변경해야합니다. this question's 우수 답변에서 말했듯이 클라이언트 측 코드를 작성하고 파일을 서버에 게시해야 할 때마다 'multipart/form-data'를 사용해야합니다. FileUpload 컨트롤을 사용하십시오.

나는 당신과 같은 문제가 있었고, 폼의 enctype을 변경했고 이제 모든 것이 잘 동작합니다.