|
AJAX.UpdatePanel 會讓 FileUpload元件上船失效,該如何解決? |
|
|
這個問題是微軟的UpdatePanel引起的,網上目前一般有2種針對性的解決方案。 最簡單的方法是將上傳的按鈕放在UpdatePanel之外,如果必須在UpdatePanel裏面的話,那麼請將UpdatePanel增加一個PostBackTrigger,這可以在Trigger屬性中設置,將這個PostBackTrigger的ControlID設置到上傳按鈕。 另外一個解決方案比較複雜方法如下: 1:新建主頁面Default.aspx 在適當的位置,放置一個上傳附件的UpdatePanel區域
2:新建上傳檔的頁面attachment.aspx,然後放上FileUpload控制項
3:在attachment.aspx裏面,上傳檔之後調用主頁面的js: protected void Button1_Click(object sender, EventArgs e) { string fileFullPath = fu_photo.PostedFile.FileName; string fileName = fileFullPath.Substring(fileFullPath.LastIndexOf('\\') + 1); string fileSavePath = "../Photos/" + fileName; fu_photo.PostedFile.SaveAs(Server.MapPath(fileSavePath)); Page.ClientScript.RegisterClientScriptBlock(Page.GetType(), "photoscript", "window.top.callBack('" + fileSavePath + "');", true); 4:Default.aspx主頁面裏面增加這個函數,處理返回值 用js改變圖片路徑為新上傳的路徑,然後伺服器端獲的隱藏欄位的值,即為新上傳圖片路徑 上傳頁面時不能獲得js更改後的image控制項的屬性值,所以添加一個隱藏欄位:
|
|
|