2012-10-30 13 views
5

to jest mój kod, gdzie moja kontrola FileUpload jest poza panelu aktualizacji, ale po kliknięciu na przycisk Zapisz, który znajduje się pod panelem aktualizacji dać fileUploadAttachment.HasFile = falseFileUpload.HasFile dać zawsze fałszywe

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); 
    } 
} 

proszę mi pomóc jak mogę to naprawić

+0

jakiego typu jest 'fileUploadAttachment' nie masz pod warunkiem, że mamy wystarczającą ilość kodu źródłowego, aby ci pomóc. Ponadto nie ma jednej linii, która faktycznie przesyła plik do formantu. 'Kontrola FileUpload nie zapisuje automatycznie pliku na serwerze po tym, jak użytkownik wybierze plik do przesłania. Musisz jawnie zapewnić kontrolę lub mechanizm, aby umożliwić użytkownikowi przesłanie określonego pliku. Na przykład możesz podać przycisk, który użytkownik kliknie, aby przesłać plik. "- Wygląda na to, że pominąłeś część kodu lub po prostu jeszcze go nie zapisałeś. –

+0

Po ponownym przejrzeniu kodu wydaje się, że próbujesz przesłać/zapisać plik, ale nigdy nie dodawaj pliku do samej kontrolki. Możesz przeczytać ten prosty przykład: http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.fileupload.fileupload.aspx –

+0

Załączam zwykły plik tekstowy i robię przesyłanie przy użyciu opcji Zapisz kliknij przycisk (btnSave_Click) –

Odpowiedz

14

Musisz dodać odświeżenie strony powoduje, że do kontroli stanowiska w UpdatePanel:

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

Tak, dziękuję. Po prostu FYI, nie bądź taki jak ja i dodaj kontrolę nad 'FileUpload' do'

+0

Dodatkowo, jeśli masz UpdatePanel na stronie wzorcowej, nie możesz dodać tam PostBackTrigger. W tej sytuacji musisz to zrobić za pomocą kodu 'ScriptManager sm = ScriptManager.GetCurrent (thisPage); scriptManager.RegisterPostBackControl (this.btnUpload); // zmiana btnUpload na prawy ID przycisku'' –

1

Możesz zmienić swój kod w ASP stronę podobną do tej

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

Formant PostBackTrigger nie ma atrybutu ID –

Powiązane problemy