1

我在页面上有一个 FileUpload 和多控件。除 FileUpload 之外,所有控件都位于更新面板中。

回发后,我将文件上传保存在视图状态中。

private FileUpload Files
{
    get { return (FileUpload)ViewState["Files"]; }
    set {
        ViewState["Files"] = value;
    }
}


.
.
.
if (ImageFileUpload.HasFile)
 {
    Files = ImageFileUpload;
 }

但我得到错误

在程序集“System.Web,Version=4.0.0.0,Culture=neutral,PublicKeyToken=b03f5f7f11d50a3a”中键入“System.Web.UI.WebControls.FileUpload”未标记为可序列化。

4

1 回答 1

1

简短的回答是 - 这无法完成......
当您收到带有 FileUpload 的回发时,您必须在那时保存它(或做任何您想做的事情)。您不能为以下回发保留流。

可以做的是:

  1. 将文件保存到服务器。
  2. 将文件名添加到 ViewState,以便您以后可以在本地访问该文件。

换句话说,是这样的:

string filename;
......
// Save file to disk
fileUpload1.SaveAs(filename);
// Keep path to file in ViewState
ViewState["FileLocation"] = filename;
于 2012-12-30T15:54:57.673 回答