在asp.net,C#中保持Fileupload控件的值

我在更新面板中使用Fileupload和3下拉控件,3下拉列表将在下拉列表中选择索引更改事件(例如国家,州和城市…根据国家,州和城市从db获取值)

问题是

虽然回发文件名路径已从文件上传控件中消失(如预期/或默认属性)。

我正在将文件转换为字节数组,以便从文件上传控件存储到数据库中。

我如何保留价值或有什么方法可以解决这个问题。

是否有任何ajax控件的文件上传或任何免费控件保留回传后的值…?

或者可以在回发期间将值设置为文件上传控件?

提前做好准备

您可以尝试使用asp.net ajax事件处理程序在异步回发之间的隐藏字段中保留文件上载值。

Sys.WebForms.PageRequestManager.instance.add_beginRequest(BeginRequestHandler) Sys.WebForms.PageRequestManager.instance.add_endRequest(EndRequestHandler) function BeginRequestHandler(sender, args) { var fileUpload = document.getElementById('fileUpload'); var hiddenUpload = document.getElementById('hiddenUpload'); hiddenUpload.value = fileUpload.value; } function EndRequestHandler(sender, args) { var fileUpload = document.getElementById('fileUpload'); var hiddenUpload = document.getElementById('hiddenUpload'); fileUpload.value = hiddenUpload.value; } 

在回发后,您可以隐藏FileUpload控件并显示一个显示文件值的Literal。

然后,如果用户想要更改上传的文件,请单击按钮并再次显示FileUpload控件。

这就是gmail的做法。

您可以将下拉列表包装在自己的更新面板中(单独的面板或嵌套面板)。

这样可以巧妙地回避这个问题,因为只有具有下拉列表的面板会在事件触发时重新呈现。

您可能必须控制哪些触发器导致面板的哪种回发,并且您可能必须将更新模式设置为条件并手动管理每个面板更新的时间。 这取决于你如何安排页面和所有。 但大多数情况下,使用多个面板时不必做任何特殊操作。

FileUpload为文件名提供了一个Property。 只是缓存它。

UploadedFile.FileName或类似的东西