C# AjaxUploadControl不触发onuploadcomplete方法

C# AjaxUploadControl不触发onuploadcomplete方法,c#,asp.net,ajax,file-upload,ajaxcontroltoolkit,C#,Asp.net,Ajax,File Upload,Ajaxcontroltoolkit,我试图在我的站点上实现AjaxUploadControl功能,但它没有启动OnUploadComplete方法。相反,它只是说文件上传了100%,但文件不在指定的文件夹中。我已经在OnUploadComplete方法中设置了断点,并且能够确定永远不会到达这个方法。当“取消”按钮显示时,它几乎像是跳进了一个无限循环,但一旦试图上传文件,屏幕上的任何按钮都无法点击 .aspx页面: <%@ Page Language="C#" AutoEventWireup="true" CodeFile="

我试图在我的站点上实现AjaxUploadControl功能,但它没有启动OnUploadComplete方法。相反,它只是说文件上传了100%,但文件不在指定的文件夹中。我已经在OnUploadComplete方法中设置了断点,并且能够确定永远不会到达这个方法。当“取消”按钮显示时,它几乎像是跳进了一个无限循环,但一旦试图上传文件,屏幕上的任何按钮都无法点击

.aspx页面:

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="AjaxTest.aspx.cs" Inherits="AjaxTest" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
        <ajaxToolkit:ToolkitScriptManager ID="ToolkitScriptManager1" runat="server">
        </ajaxToolkit:ToolkitScriptManager>
    <div>
            <ajaxToolkit:AjaxFileUpload ID="ajaxUpload1" runat="server" OnUploadComplete="ajaxUpload1_OnUploadComplete" />
    </div>
    </form>
</body>
</html>

非常感谢您的帮助

属性是
OnClientUploadComplete
,而不是
OnUploadComplete

参考

事件

UploadedComplete—上载文件时在服务器上引发 成功地在本事件中,将显示AjaxFileUploadEventArgs的实例 传入包含文件名、大小和内容类型的参数


如果您没有设置正确的enctype和方法,UploadedComplete将永远不会启动。 尝试将enctype=“multipart/form data”添加到表单标记中。 例如

代码隐藏:

protected void AjaxFileUpload1_UploadComplete(object sender, AjaxControlToolkit.AjaxFileUploadEventArgs e)
{
    string filePath = "~/SiteImages/";
    AjaxFileUpload1.SaveAs(MapPath(filePath + System.IO.Path.GetFileName(e.FileName)));
}
<form id="form1" runat="server" enctype="multipart/form-data" method="post">
      <asp:ScriptManager ID="ScriptManager1" runat="server">
    </asp:ScriptManager>
    <div>
        <asp:AjaxFileUpload ID="AjaxFileUpload1" runat="server" 
            onuploadcomplete="AjaxFileUpload1_UploadComplete" />   
    </div>
    </form>
内联代码:

protected void AjaxFileUpload1_UploadComplete(object sender, AjaxControlToolkit.AjaxFileUploadEventArgs e)
{
    string filePath = "~/SiteImages/";
    AjaxFileUpload1.SaveAs(MapPath(filePath + System.IO.Path.GetFileName(e.FileName)));
}
<form id="form1" runat="server" enctype="multipart/form-data" method="post">
      <asp:ScriptManager ID="ScriptManager1" runat="server">
    </asp:ScriptManager>
    <div>
        <asp:AjaxFileUpload ID="AjaxFileUpload1" runat="server" 
            onuploadcomplete="AjaxFileUpload1_UploadComplete" />   
    </div>
    </form>


希望有帮助。

我发现了我的问题。我试着在一个网站上实现这个功能,而不是在一个web应用程序上。我创建了一个测试web应用程序平台,它工作得完美无缺。我是AJAX的初学者,没有意识到这会引起问题,但是,有人知道在网站上使用此功能的解决方案吗。现在恐怕有太多东西无法轻松移植到web应用。

您遇到的实际问题是您的web.config中需要一个HTTP处理程序

<httpHandlers>
    <add verb="*" path="AjaxFileUploadHandler.axd"
      type="AjaxControlToolkit.AjaxFileUploadHandler, 
      AjaxControlToolkit"/>
</httpHandlers>


我也有同样的问题(上传时出现红色错误,.cs文件中的事件根本没有触发),现在通过将其添加到我的web.config中解决了。请遵循以下规则(.NET 4.0)或(.NET 4.5 FRAMEWORKS)
<httpHandlers>
    <add verb="*" path="AjaxFileUploadHandler.axd"
      type="AjaxControlToolkit.AjaxFileUploadHandler, 
      AjaxControlToolkit"/>
</httpHandlers>
确保在项目中使用了以下步骤

  • HTML页面(必须是这样的)

    
    

  • IMPORTENT WEB.Config应该是(对于.net 4.5具有以下标记

    
    

  • IMPORTENT WEB.Config应该是(具有小于4或4.5的的以下标记)

  • 
    

    如果您没有设置正确的enctype和方法,UploadedComplete将永远不会启动。请尝试将enctype=“multipart/form data”添加到表单标记中。我将您建议的内容添加到我的表单选项卡中,现在看起来像“”,但我仍然有相同的问题。不,如果您使用ajax控件工具包,您不必这样做。在
    Page\u Load
    中是否有依赖于
    IsPostBack
    属性的逻辑?查询字符串中是否有参数?我还添加了method=“post”,但仍然没有成功。您使用的是哪个版本的Ajax控件工具包?请尝试以下操作OnClientUploadComplete=“ajaxUpload1\u OnUploadComplete”我需要在服务器端执行此操作,我建议下载最新版本的Ajax控件工具包并添加到您的项目中,因为我刚刚用较新版本测试过它,它确实会触发事件并命中断点。我不想执行客户端java脚本。我正试图在codebehind中的服务器端执行此操作。如果是这样,请查看我的编辑。您使用的事件错误。Intellisense不包含UploadedComplete的条目?请检查并单击事件和属性。我已经看到,我已尝试将其插入到我的代码中。这个站点和其他几个站点以我的方式引用它。我将再次尝试上载完成并让您知道。