2012-10-30 125 views
5

这是我的代码在我的FileUpload控件超出更新面板,但是当我点击保存按钮是更新面板下给fileUploadAttachment.HasFile =假FileUpload.HasFile给总是假

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

请帮助我,我怎么能解决这个问题

+0

是什么类型'fileUploadAttachment'你有没有为我们提供了足够的源代码来帮助您。此外,没有一条线实际上传文件到控件。 '用户选择要上传的文件后,FileUpload控件不会自动将文件保存到服务器。您必须明确提供控件或机制以允许用户提交指定的文件。例如,您可以提供一个用户点击的按钮来上传文件。“ - 似乎您已经遗漏了一些代码或者完全没有编写它。 –

+0

再次查看代码,似乎您尝试上载/保存该文件,但决不会将该文件添加到控件本身。你可能想阅读这个简单的例子http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.fileupload.fileupload.aspx –

+0

我附上一个普通的文本文件,并使用保存上传按钮单击(btnSave_Click) –

回答

14

你需要添加回发触发器发布UpdatePanel内的控件:

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

是的,谢谢。只是一个参考,不要像我这样的doofus,并将'FileUpload'的控件添加到'

+0

此外,如果您在Master Page中具有UpdatePanel,则无法在其中添加PostBackTrigger。所以在这种情况下,你需要通过代码 'ScriptManager sm = ScriptManager.GetCurrent(this.Page); scriptManager.RegisterPostBackControl(this.btnUpload); //将btn上传到右边的按钮ID' –

1

你可以改变你的代码在ASP页面类似这样的

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

PostBackTrigger控件没有ID属性 –