ASP.NET在回发后保留文件上载量

时间:2010-07-13 16:47:14

标签: vb.net file-upload postback

我正在使用VB.NET编写Intranet ASP.NET页面。处理文件上传时,我遇到了一个特别棘手的问题。我会尽力解释这个问题,也许有人可以提供帮助。

我的问题几乎与this onethis one重复,除了(文件名除外)我不关心将文件发送到服务器,直到其他数据被审核。

情况如下:

Joe Q. Dataentry将一些数据输入到多个字段中。下三个是下拉列表,当他更改选择时,会触发一个回发事件,该事件查询数据库以查找其他下拉选项的有效条目。选择值后,他输入一些其他数据,选择伴随数据的文件并单击“更新”按钮。当他点击按钮时,它会触发一个回发事件,该事件将当前数据发送到要验证的服务器。数据将在数据库中创建一个更改,因此他会看到当前状态的视图,以及进行更改时的状态。他现在可以出于任何原因确认或取消操作。

他将看到的部分数据涉及文件的扩展,可能是PDF,也可能是某些图像文件或其他文件。

现在我的问题在于 - 在每个回发事件上,文件上载对话框被清除。我通过在第一个回发上创建一个临时文件,然后重命名,如果他单击确定或删除取消...来解决它...但我需要根据以前的数据状态和文件名做各种事情。我试图保留一些会话变量以保留文件名,这对于重命名文件很有效,但是对于我需要做的事情,它变得笨拙。

我想要做的是能够让回发事件来呈现更改,当用户点击“确定”时,然后,提交文件。有没有可能的方法呢?

我的一个想法是做一些验证客户端(我已经重新验证服务器端,所以我不太担心那里的数据安全性),但我不知道我怎么能得到来自数据库查询的信息。

感谢您的帮助,并阅读我稍微复杂的故事/情况!


修改

看来我想做的是阻止某个按钮触发完整的回发。有没有办法做到这一点?

编辑II:

我已经在页面上有一个更新面板 - 是否有任何方法可以发布更新面板中的内容?

1 个答案:

答案 0 :(得分:2)

您可能想要做的是将您的下拉列表放在ASP.NET AJAX UpdatePanel中,并保持文件上载控制权。

您的更新面板将执行回发并允许验证逻辑在不提交文件的情况下发生,然后当您点击最终的“保存”按钮(也在UpdatePanel之外)时,整个表单将被提交回来并且你可以使用你的文件。