在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
。