Asp:fileupload 使用而不使用 fullpostback

问题描述 投票:0回答:1

我目前从事 Web 应用程序开发,特别是使用 ASP.NET Web Forms 框架(而不是 MVC),并且我主要在我的技术堆栈中使用 JavaScript 和 C#。我在网络应用程序开发方面的知识相对较新。

在我当前的项目中,我实现了一个模式弹出窗口,其中包含一个 ASP 文件上传控件和一个上传按钮。为了确保流畅的用户体验而无需刷新整个页面,文件上传控件和上传按钮都包含在更新面板中。但是,在尝试验证 FileUpload.HasFile 属性而不启动完整回发时,我遇到了挑战。

为了解决这个问题,我在更新面板中使用了触发器。我的目标是保持无缝的用户体验,但有一个问题:当发生完整回发时,页面刷新,弹出窗口突然关闭。这会扰乱工作流程并造成多个障碍。我正在寻求有关如何在弹出模式中实现无缝文件上传验证的建议或想法,而不会在发生完整回发时关闭它。

javascript c# asp.net file-upload webforms
1个回答
0
投票

标准 HTML 文件上传控件(或 asp.net 控件,这是同一控件)需要回发才能正常工作。文件上传控件不仅需要完整页面回发,而且使用更新面板作业是为了防止并且不首先回发页面。

这意味着您不能在更新面板内使用标准文件上传控件。事实上,如果您的目标是不进行页面回发,则无法使用文件上传控件。

因此,由于更新面板不会回发整个网页,因此您无法在更新面板内使用文件上传控件。

然而,在当今时代,有许多很好的文件上传实用程序和控件示例(许多是免费的)。在大多数情况下,此类控件可以在更新面板内部使用(它们不需要回发来上传文件)。

事实上,由于许多 ajax 异步上传器控件不需要也不需要触发回发?

那么在大多数情况下,您无论如何都不需要也不想要更新面板,对吧?

其他优点还有很多,比如这些控件大部分都会显示上传进度条(从UI和可用性的角度来看,内置的文件上传控件简直就是在虐人)。

在大多数情况下,这些 ajax 上传器库在 jQuery.UI 对话框弹出表单中工作。而且,再一次,由于这些控件不需要回发,也不需要页面回发,因此该控件不仅可以在更新面板内部工作(您可能不再需要了!!!),但是这样控件甚至可以在 jQuery.UI 弹出对话框中工作。

所以,这样说:

注意上面,我们有一个选择按钮(选择一个或多个文件),或者您可以像我上面那样使用拖放热点(同样,这些拖放热点是大多数上传器控件的功能).

尽管上述上传器位于弹出对话框内,但不会发生回发,因此弹出对话框(jquery.UI 对话框)能够在选择文件和上传文件期间保持打开状态。

上面使用的上传控件是AjaxTookit中免费开源的。该工具包现在由 DevExpress 的优秀人员维护。

上传器控件还有很多其他选择,只需谷歌即可获取一些其他示例。

因此,我建议您采用一种编写良好的上传器控件,并且不需要回发。如上所示,在许多情况下,您将不再需要更新面板。

使用 ajax 上传器的另一个优点是它们以小块的形式上传文件,这意味着文件大小没有限制。如上所示,由于文件是以块的形式上传的,因此用户有一个很好的进度条,而不是使用标准文件上传控件时似乎冻结的某些页面。

您可以使用 Nuget 找到免费的开源 AjaxTookkit,也可以从这里的 DevExpress 获取副本:

https://www.devexpress.com/Products/AJAX-Control-Toolkit/

如上所述,上面的 AjaxFileUploader 是众多免费示例之一。

我在这里简单说的是,有这么多免费的优秀示例文件上传控件,那么使用 HTML 文件上传控件就没有什么意义了。如上所示,此类控件可带来更好的用户体验和更新的上传体验,这是用户在使用互联网时所期望的。

© www.soinside.com 2019 - 2024. All rights reserved.