将文件设置为FileLoad无法正常工作(C#.net)

问题描述:

我将“manualy”设置文件设置为FileLoad存在问题。将文件设置为FileLoad无法正常工作(C#.net)

因此,这里是我的情况:

我使用本手册:http://www.codeproject.com/Tips/101834/How-to-Maintain-FileUpload-Control-s-State-after-P?msg=4176652#xx4176652xx

我需要记住文件加载回发后页面上。所以我有FileLoad对象和Button将做PostBack。回发之后,我设置了Session [“MenuFile”] = FileLoad ;,会话记录被创建,但是,当我尝试将该文件重新设置为FileLoad对象时,它真的到达那里(我可以在LoadFile对象上看到该文件)。但在页面上它是空的。我试图在FileLoad对象的Load,Init事件上设置它,但没有任何工作。

这就像FileLoad从会话中成功加载文件并将其“重置”为默认设置(空白)。

而且我的继承人代码:

 <tr> 
     <td> 
      <asp:Label runat="server" Text="Menu:"></asp:Label></td> 
     <td> 
      <asp:FileUpload runat="server" ID="fuMenu"/> 
      <asp:RequiredFieldValidator runat="server" ID="rfvMenu" ControlToValidate="fuMenu" ErrorMessage="Menu file is required" ForeColor="Red">*</asp:RequiredFieldValidator> 
     </td> 
    </tr> 
    <tr> 
     <td> 
      <asp:Button runat="server" ID="neco" /> 
      <asp:ValidationSummary runat="server"/> 
     </td> 
    </tr> 

而后面的代码:

protected void Page_Load(object sender, EventArgs e) 
    { 

     // If first time page is submitted and we have file in FileUpload control but not in session 
     // Store the values to Session Object 
     if (Session["MenuFile"] == null && fuMenu.HasFile) 
     { 
      Session["MenuFile"] = fuMenu; 

     } 
     // Next time submit and Session has values but FileUpload is Blank 
     // Return the values from session to FileUpload 
     else if (Session["MenuFile"] != null && (!fuMenu.HasFile)) 
     { 
      fuMenu = (FileUpload)Session["MenuFile"]; 

     } 
     // Now there could be another sictution when Session has File but user want to change the file 
     // In this case we have to change the file in session object 
     else if (fuMenu.HasFile) 
     { 
      Session["MenuFile"] = fuMenu; 
     } 
    } 

我需要用会话中工作,所以我不能使用这样的: How to Maintain FileUpload Control’s State after PostBack Information disappears on button click

我真的很绝望,我会很乐意提供任何帮助。 谢谢!

+0

你在使用'UpDatePanel'吗? – MethodMan 2013-04-28 00:10:16

+0

是的,我忘了提及它。我已经尝试过,没有它,结果相同。 :( – Mastenka 2013-04-28 00:34:38

出于安全原因,ASP:FileUpload由设计为只读。回发后您无法设置任何内容。

回发后,我使用标签而不是fileupload作为反馈给用户,上传了文件。

我的回发检查文件上传的内容,上传文件,隐藏文件上传,显示包含文件名的标签(存储在会话对象中),并显示一个隐藏标签的删除按钮,删除会话对象,删除文件并在另一个回发之后再次显示fileupload。