[ASP .NET]Fileupload控制項在WebUserControl中失效

[ASP .NET]Fileupload控制項在WebUserControl中失效

有時候放在UpdatePanel裡面的Fileupload控制項,在第一次載入頁面時,HasFile都會回傳false,要按第二次才會回傳true。

詳細原因及說明參照此連結

首先我們要知道

當需要上傳檔案時,Form的encode必須是multipart/form-data

如同一頁面有兩個WebUserControl,且Fileupload控制項放在第二個WebUserControl,當頁面載入第一個WebUserControl時,因為不含Fileupload控制項,Form的encode就會被設定成不是multipart/form-data, 而當載入第二個WebUserControl,即使有Fileupload控制項,卻因為UpdatePanel的關係,Form的encode不會改變成multipart/form-data, 直到第二個控制項有經過PostBack動作才會改寫Form encode,造成第一次的HasFile總是false的結果。

解決方法

經實測,在第二個WebUserControl的Page_Load加上下面這一段即可。

Page.Form.Attributes.Add("enctype", "multipart/form-data");

在該連結的Comments中也有人提到,如果你將Fileupload控制項放在Wizard的Step 2以後,也會有一樣的問題發生。

參考來源

http://knowledgebaseworld.blogspot.tw/2009/02/file-upload-not-working-with-update.html