2011-04-01 51 views
0

我有一个detailsView里面的更新面板,并在detailsView我有一个FileUpload控制和一个按钮btn_Upload。在单击事件我已经写代码:文件上传控制在更新面板总是返回假

if(fileUploadControl.HasFile) 
{ 
    var fileName = fileUploadControl.FileName; 
} 

总是返回false,可有一个人告诉我为什么?

回答

3

UpdatePanel中的FileUpload会导致提交,但它不会出于安全原因 - 浏览器不允许JavaScript访问我们文件系统中的随机文件。我建议你用这个http://www.asp.net/ajax/ajaxcontroltoolkit/Samples/AsyncFileUpload/AsyncFileUpload.aspx来代替你的想法。

另一个曾为此问题制作过博客的人关于它here

+0

如果它导致提交然后为什么它不工作?如果它是通过input type =“file”提交的,那为什么JavaScript会访问文件系统上的随机文件? – 2011-04-01 11:41:27

+0

在后台ASP.NET JavaScript停止完成提交,然后执行XMLHTTP发布。正是这个javascript获取了更新面板中所有字段的值,并通过XHR请求将它们发送到服务器。所以当这个javascript遇到[input type = file]时,它会跳过该字段,因为它无法从中获取值(因为浏览器的安全性),浏览器不允许ASP.NET javascript访问[input中选择的文件用户类型=文件]。 – Zasz 2011-04-06 13:20:34

1

它只是一个更新面板中的FileUpload控件的问题。为了实现它,你需要做一个完整的回发。或者使用替代方法