在c#中,如何访问事件之外的AsyncFileUpload类/对象?

在c#中,如何访问事件之外的AsyncFileUpload类/对象?,c#,asp.net,asp.net-ajax,ajaxcontroltoolkit,C#,Asp.net,Asp.net Ajax,Ajaxcontroltoolkit,我正在处理一个图像上传模块,页面中有一个AsyncFileUpload控件,我相信(一旦用户浏览文件路径),它会将文件保存在temp中。缓冲区,直到调用方法AsyncFileUpload.SaveAs(filePath) 本例中的场景是,我希望在使用提交完整表单时调用此方法(目的是,如果用户浏览了图像,然后决定取消操作,则文件不得存储在服务器上) 因此,我尝试调用AsyncFileUpload.SaveAs(filePath)在protectedvoid btnUpload\u Click(ob

我正在处理一个图像上传模块,页面中有一个
AsyncFileUpload
控件,我相信(一旦用户浏览文件路径),它会将文件保存在temp中。缓冲区,直到调用方法AsyncFileUpload.SaveAs(filePath)

本例中的场景是,我希望在使用提交完整表单时调用此方法(目的是,如果用户浏览了图像,然后决定取消操作,则文件不得存储在服务器上)

因此,我尝试调用
AsyncFileUpload.SaveAs(filePath)
protectedvoid btnUpload\u Click(object sender,EventArgs e)
中,但如果我这样做,则会给出由用户代码引发的NullReferenceException

我相信这是因为
AsyncFileUpload
触发了回发事件,因此当我再次调用它时,它是空的

可能我需要在运行时存储/访问临时缓冲区中的文件

如有任何建议,将不胜感激

StackTrace显示:

在AjaxControlToolkit.AsyncFileUpload.SaveAs(字符串文件名) 在默认值处,单击d:\Projects\ImageRepository\u default.aspx.cs:第27行中的(对象发送者,事件参数e) 在System.Web.UI.WebControls.Button.OnClick(EventArgs e)中 位于System.Web.UI.WebControl.Button.RaisePostBackEvent(String eventArgument) 位于System.Web.UI.WebControl.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(字符串事件参数) 位于System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl,String eventArgument) 位于System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData)
在System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint,Boolean IncludeStagesSafteraSyncpoint)

如果将控件设置为
persist=true
,您应该能够访问AsyncFileUpload事件之外的内容。

如果愿意,您可以尝试此方法,直到找到更优雅的方法。 首先定义一个静态控件:

private static AsyncFileUpload fu = new AsyncFileUpload();
然后在页面加载中添加以下行:

fileUpload.UploadedComplete += fileUpload_UploadedComplete;
在哪里

protected void fileUpload_UploadedComplete(object sender, AsyncFileUploadEventArgs e)
        {
            fu = fileUpload;
        }
其中
fileUpload
是页面/Web用户控件中使用的
AsyncFileUpload
控件的ID

这将保留所选上载文件的详细信息

当文件已经存在于服务器上,并且我必须向用户发出确认警报(以同意覆盖或不覆盖)(因为此警报会导致回发,因此来自ASU的信息丢失)时,我使用此场景

希望它能对某些人有所帮助,因为我在寻找解决办法时浪费了一些宝贵的时间。最后我想到了这个,但我相信有一个更优雅的方法


拜拜

发布exception@DavidNelson这篇文章的篇幅太长了,我已经在原始问题下方发布了。在当前版本的控件工具包中,该属性名为
PersistFile