[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