![](/img/trans.png)
[英]c# - How to access a variable from outside its class in a method in some other class?
[英]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.