2012-10-30 17 views
5

dies ist mein Code, wo meine Fileupload-Steuerelement außerhalb des Update-Panel ist, aber wenn ich Schaltfläche Speichern klicken Sie auf die unter Update-Panel ist geben fileUploadAttachment.HasFile = falseFileUpload.HasFile geben immer falsch

ASPX

<asp:Literal runat="server" ID="lblAttachment" Text="Attachment:" /><asp:FileUpload 
      ID="fileUploadAttachment" runat="server" Width="488px" /> 
     <asp:UpdatePanel ID="updatePanelAction" runat="server" UpdateMode="Always"> 
      <ContentTemplate> 
       <asp:Button ID="btnSave" runat="server" Text="Save" OnClick="btnSave_Click" ValidationGroup="Save" /> 
       <asp:Button ID="btnTest" runat="server" Text="Test" Enabled="false" OnClick="btnTest_Click" /> 
       <asp:Button ID="btnConfirmTest" runat="server" Text="Confirm Test" Enabled="false" 
        OnClick="btnConfirmTest_Click" /> 
       <asp:Button ID="btnSend" runat="server" Text="Send" Enabled="false" OnClick="btnSend_Click" /> 
      </ContentTemplate> 

     </asp:UpdatePanel> 

CS

protected void btnSave_Click(object sender, EventArgs e) 
{ 
    CampaignBAL campaignBAL; 
    string tmpFileName = ""; 
    User user; 
    Campaign campaignDetail = new Campaign(); 
    int? campaignID; 

    if (fileUploadAttachment.HasFile) // return always false 
    { 
     tmpFileName = string.Format("{0}\\{1}{2}", Server.MapPath("TempUpload"), Guid.NewGuid(), Path.GetExtension(fileUploadAttachment.PostedFile.FileName)); 
     fileUploadAttachment.PostedFile.SaveAs(tmpFileName); 
    } 
} 

mir bitte helfen, wie kann ich es beheben

+0

Welche ist 'fileUploadAttachment' Sie nicht haben hat uns genug Quellcode zur Verfügung gestellt, um Ihnen zu helfen. Außerdem gibt es keine einzelne Zeile, die die Datei tatsächlich zum Steuerelement hochlädt. 'Das FileUpload-Steuerelement speichert eine Datei nicht automatisch auf dem Server, nachdem der Benutzer die hochzuladende Datei ausgewählt hat. Sie müssen explizit ein Steuerelement oder einen Mechanismus angeben, damit der Benutzer die angegebene Datei senden kann. Sie können beispielsweise eine Schaltfläche angeben, auf die der Benutzer klickt, um die Datei hochzuladen. - Scheint, dass Sie etwas von Ihrem Code weggelassen oder ihn einfach noch nicht geschrieben haben. –

+0

Wenn Sie den Code erneut betrachten, scheint es, dass Sie versuchen, die Datei hochzuladen/zu speichern, aber fügen Sie die Datei niemals dem Steuerelement selbst hinzu. Vielleicht möchten Sie dieses einfache Beispiel lesen http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.fileupload.fileupload.aspx –

+0

Ich bin eine normale Textdatei beifügen und Upload mit Speichern Knopf klicken (btnSave_Click) –

Antwort

14

Sie werden Postbacks für Kontrollen löst hinzufügen müssen, die innerhalb des UpdatePanel schreiben:

<asp:UpdatePanel ...> 
    <Triggers> 
    <asp:PostBackTrigger ControlID="btnSend" /> 
    </Triggers> 
    ... 
</asp:UpdatePanel> 
+0

Aye, danke. Nur ein FYI, seien Sie nicht ein Doofus wie ich und fügen Sie die Kontrolle der 'FileUpload' auf die '

+0

Wenn Sie das UpdatePanel auf der Masterseite haben, können Sie den PostBackTrigger dort nicht hinzufügen. In diesem Fall müssen Sie dies über den folgenden Code tun: 'ScriptManager sm = ScriptManager.GetCurrent (this.Page); scriptManager.RegisterPostBackControl (this.btnUpload); // ändere btnUpload zur rechten Button-ID' –

1

Sie Ihren Code in der ASP-Seite ändern können wie diese

<asp:updatePanel> 
<trigger> 
<asp:PostBackTrigger ID="btnSend"> 
</trigger> 
<\asp:updatePanel> 
+0

Das PostBackTrigger-Steuerelement hat kein ID-Attribut –

Verwandte Themen