我使用asp:upload控件上传图像,并使用postingfile属性插入数据库的路径。在我的表单中,我有一个autopostback = true的下拉列表,用户可以选择一个主题来填充类别的复选框列表。在该回发期间,postfile值正在丢失,经过一些研究后,我发现出于安全原因,发布的文件值未在viewstate中维护。有没有人发现如何解决这个问题?
答案 0 :(得分:2)
这就是它的工作原理。 intput type =“file”的值从不用于解析HTML页面。这是一个巨大的安全风险,因此没有现代浏览器可以让他们“保留”价值。所以在ASP.NET中,每次回发都“失去”了价值。
在输入控件中包含文件的任何回发中,请务必将值保存在稍后可以获取的位置。
或者,不要设计使用文件上传的表单来进行多次回发。也许考虑在UpdatePanel中包装下拉列表和相关控件,这样就不会清除文件上传。
答案 1 :(得分:1)
除了用户交互之外,输入文件元素的value属性根本无法设置。这就是它的工作方式,并且由于安全问题而不会改变。也就是说,您的解决方案是消除回发。
答案 2 :(得分:0)
我会尝试通过JavaScript / AJAX加载复选框列表,可能会将复选框列表的值保存到隐藏字段,这样我就可以在回发中保留这些值。
这可能不太理想,但如果您想要在没有回发的情况下完成所有操作,那么在某些时候您将不得不使用JavaScript。
答案 3 :(得分:0)
您可以在AjaxControlToolkit中尝试AsynchFileUpload控件,但除非您将文件保存到临时文件夹并从该临时文件夹加载文件列表,否则标准文件上载没有解决方法。