如何保留FileUpload控件的值?

XuDong Peng-MSFT 10,746 信誉分 Microsoft 供应商
2024-01-29T09:02:16.8966667+00:00

我在更新面板中使用了 asp.net FileUpload 控件。当我单击上传按钮时,我想在回发后保留所选文件。但是FileUpload 控件的值都消失了,我该怎么实现这个需求?

<asp:UpdatePanel ID="UpdatePanel3" runat="server">
    <ContentTemplate>
         <asp:FileUpload ID="FileUpload1" runat="server" />
         <asp:RequiredFieldValidator ID="rfvFileupload" ValidationGroup="validate" 	  runat="server" ErrorMessage="* required" ControlToValidate="FileUpload1"></asp:RequiredFieldValidator>
    </ContentTemplate>
</asp:UpdatePanel>

ASP.NET
ASP.NET
.NET Framework 中一套用于生成 Web 应用程序和 XML Web 服务的技术。
20 个问题
0 个注释 无注释
{count} 票

接受的答案
  1. Zhi Lv - MSFT 32,446 信誉分 Microsoft 供应商
    2024-01-29T09:17:03.3966667+00:00

    你好,

    根据你提供的代码,存在以下两个问题:

    1.FileUpload 控件不适用于异步回发。因此需要回发才能获取文件。你需要设置上传按钮的触发器,即 <asp:PostBackTrigger >

     <asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional"> 
    	      <ContentTemplate> 
    	      <asp:FileUpload ID="fileUpload1" runat="server"></asp:FileUpload> 
    	      <asp:Button ID="btnUpload" runat="server" Text="Upload Image"  
    	           OnClick="btnUpload_Click" /> 
    	      </ContentTemplate> 
              <Triggers> 
    	          <asp:PostBackTrigger ControlID="btnUpload"  /> 
    	      </Triggers>
     </asp:UpdatePanel>
    
    
    protected void btnUpload_Click(object sender, EventArgs e)
         {
            if (fileUpload1.HasFile)
            {                
                var fileName = fileupload1.FileName;
                fileUpload1.SaveAs("~/UploadedSources/" + fileName);
            }
         }
    
    

    2.如果你需要保留FileUpload 控件的值,您可以将fileupload对象完全存储在会话中,并在回发后从会话中检索所需的值。就像这样:

    protected void Page_Load(object sender, EventArgs e)
        {
             if (Session["FileUpload1"] == null && FileUpload1.HasFile)  
               { 
                Session["FileUpload1"] = FileUpload1; 
               }
            else if (Session["FileUpload1"] != null && (! FileUpload1.HasFile)) 
              { 
                FileUpload1 = (FileUpload) Session["FileUpload1"]; 
              } 
            else if (FileUpload1.HasFile) 
             { 
                Session["FileUpload1"] = FileUpload1; 
             }
         }
    
    

    如果答案是正确的解决方案,请单击“接受答案”并请投赞成票。如果您对此答案有其他疑问,请点击“评论”。
    注意:如果您想接收此线程的相关电子邮件通知,请按照我们文档中的步骤启用电子邮件通知。
    最好的问候

    0 个注释 无注释

0 个其他答案

排序依据: 非常有帮助

你的答案

问题作者可以将答案标记为“接受的答案”,这有助于用户了解已解决作者问题的答案。