簡體   English   中英

在 c# 中,如何在其事件之外訪問 AsyncFileUpload 類/對象?

[英]How can I access AsyncFileUpload class/object outside its events ,in c#?

我正在處理圖像上傳模塊並在頁面中有一個AsyncFileUpload控件,我相信(一旦用戶瀏覽文件路徑)將文件保持在臨時狀態。 緩沖,直到您調用方法AsyncFileUpload.SaveAs(filePath)

在我的情況下,我想在使用提交完整表單時調用此方法,(目的是如果用戶瀏覽了圖像並隨后決定取消操作,則文件不得存儲在服務器上),

因此,我試圖在protected void btnUpload_Click(object sender, EventArgs e)中調用AsyncFileUpload.SaveAs(filePath)但如果我這樣做,它會給出 NullReferenceException 未處理由用戶代碼引導。

我相信這是因為AsyncFileUpload觸發了一個回發事件,因此當我再次調用它時它是空的。

可能我需要在運行時從臨時緩沖區存儲/訪問文件。

任何建議將不勝感激。

StackTrace 顯示:

在 AjaxControlToolkit.AsyncFileUpload.SaveAs(String fileName) 在 _default.btnUpload_Click(Object sender, EventArgs e) 在 d:\Projects\ImageRepository_default.aspx.cs:line 27 在 System.Web.UI.WebControls.Button.OnClick(EventArgs e) ) 在 System.Web.UI.WebControls.Button.RaisePostBackEvent(字符串事件參數) RaisePostBackEvent(IPostBackEventHandler sourceControl,String eventArgument)在 System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData)在 System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint,88116134347AsyncPoint)includeStages

如果將控件設置為persist=true ,則應該能夠在 AsyncFileUpload 事件之外訪問其內容。

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

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 的信息會丟失)

希望它能對某人有所幫助,因為我浪費了一些寶貴的時間來尋找解決方法。 最后我想到了這個,但我相信有更優雅的方法來做到這一點。

再見

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM