2012-12-30 85 views
1

我在頁面上有一個FileUpload和Multy控件。所有控件都位於FileUpload以外的更新面板內。如何在回發後將fileupload保存到視圖狀態?

發佈後,我保存fileupload在視圖狀態。

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


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

但我得到的裝配誤差

類型「System.Web.UI.WebControls.FileUpload 'System.Web程序,版本= 4.0.0.0,文化=中性公鑰= b03f5f7f11d50a3a'未標記爲可序列化。

回答

1

簡短的答案是 - 這不能做...
當你回發一個文件上傳你必須保存(或做任何你想要的)在這一點上。您不能保留以下回發的流。

什麼你可以做的是:

  1. 將文件保存到服務器。
  2. 將文件名添加到ViewState中,以便您稍後可以在本地訪問該文件。

換句話說,這樣的事情:

string filename; 
...... 
// Save file to disk 
fileUpload1.SaveAs(filename); 
// Keep path to file in ViewState 
ViewState["FileLocation"] = filename; 
+0

謝謝,我想保存文件時savebutton點擊。但我有一個下拉列表,autopostback是真的。當我更改dropdownlist fileuplad是空的,我想保存fileupload並保存按鈕保存它。 – Niloo

+0

聽起來像一個用戶體驗問題,以解決有人可能首先選擇文件,然後更改下拉的問題 - 使'FileUpload1.Visible = false'直到下拉改變後。只有當下拉改變使'FileUpload1.Visible = true' – Blachshma

+0

我有multy下拉列表用戶改變它。我想在第一次回發後保存fileupload。有可能的???!! – Niloo