2012-04-06 104 views
0

我正在使用圖片上傳模塊,並在頁面中有一個AsyncFileUpload控件,我相信(一旦用戶瀏覽文件路徑)將文件保持在臨時狀態。緩衝區,直到你調用方法AsyncFileUpload.SaveAs(filePath),如何在c#中的事件之外訪問AsyncFileUpload類/對象?

在我的情況是,我想在使用提交完整的表單時調用這個方法,(目的是,如果用戶瀏覽過圖像,然後決定取消操作然後文件不能存儲在服務器上),

所以,而是我試圖呼叫AsyncFileUpload.SaveAs(filePath)裏面protected void btnUpload_Click(object sender, EventArgs e)但如果我這樣做,它給NullReferenceException是由用戶代碼的unhand主導。

我相信會發生這種情況,因爲AsyncFileUpload會觸發回發事件,因此當我再次調用它時,它就是空的。

也許我需要在運行時存儲/訪問文件形式的臨時緩衝區。

任何建議將不勝感激。

堆棧跟蹤示出了:

在AjaxControlToolkit.AsyncFileUpload.SaveAs(字符串文件名) 在_default.btnUpload_Click(對象發件人,EventArgs e)在d:\項目\ ImageRepository_default.aspx.cs:線27 在系統.Web.UI.WebControls.Button.OnClick(EventArgs e) at System.Web.UI.WebControls.Button.RaisePostBackEvent(String eventArgument) at System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler .RaisePostBackEvent(String eventArgument) at System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl,String eventArgument) at System.Web.UI.Page.Rai sePostBackEvent(NameValueCollection中POSTDATA) 在System.Web.UI.Page.ProcessRequestMain(布爾includeStagesBeforeAsyncPoint,布爾includeStagesAfterAsyncPoint)

+0

郵政perty lenghty張貼在這裏,我已經發布低於原來的問題異常 – 2012-04-06 18:13:49

+0

@DavidNelson多數民衆贊成的堆棧跟蹤。 – Vishal 2012-04-07 17:29:14

回答

1

如果設置控制persist=true,你應該能夠訪問AsyncFileUpload事件之外的內容。

+0

在當前版本的控件工具包中,該屬性被稱爲「PersistFile」。 – 2012-06-25 10:20:19

0

如果你願意,你可以嘗試這種方法,直到找到更優雅的方法。 首先定義一個靜態控制:

private static AsyncFileUpload fu = new AsyncFileUpload(); 

然後添加下面一行在Page_Load中:

fileUpload.UploadedComplete += fileUpload_UploadedComplete; 

其中

protected void fileUpload_UploadedComplete(object sender, AsyncFileUploadEventArgs e) 
     { 
      fu = fileUpload; 
     } 

其中fileUpload是你AsyncFileUpload控制中所使用的ID您的頁面/ Web用戶控件。

這將保留選擇上傳文件的細節。

我使用這種情況時,文件已經存在於服務器上,我必須提醒用戶確認警報(同意覆蓋與否)(因爲此警報導致回發,所以信息從ASU丟失)

希望它對某人有所幫助,因爲我失去了一些寶貴的時間尋找解決方法。最後我想出了這個,但我相信有一個更優雅的方式來做到這一點。

再見

相關問題